在 Google Apps 脚本中的同一脚本中的另一个函数中调用一个函数
Call a function within another function in the same script in Google Apps Script
我刚开始编写代码,需要一些帮助。我正在制作 google 张纸。在下面的代码中,我试图在 copyAllInRange()
函数中调用 Merge()
函数。我看到了很多例子,但我对如何去做有点困惑。这两个功能都运行良好;我不知道如何将一个函数调用到另一个函数中。
objective是运行copyAllInRange()
;并在函数末尾将 Merge()
函数调用到 运行.
function Merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var Range_Logo = sheet.getRange('C11:D16').merge();
var Range_Bottom = sheet.getRange('C50:J52').merge();
Range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
Range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
}
function copyAllInRange(){
var SS = SpreadsheetApp.getActiveSpreadsheet();
var NS = SS.getSheetByName("PDF_TEMP");
if (NS != null) {
SS.deleteSheet(NS);}
NS = SS.insertSheet();
NS.setName("PDF_TEMP");
var Sheet = SS.getSheetByName("Factura");
var TR = Sheet.getRange("C3:N59");
var PR = NS.getRange("A1:L55");
var columnWidths = SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS
TR.copyTo(PR);
TR.copyTo(PR,columnWidths,false);
}
Both are in the same script file; both work independently.
可以在合并函数的最后调用第二个函数
function Merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var Range_Logo = sheet.getRange('C11:D16').merge();
var Range_Bottom = sheet.getRange('C50:J52').merge();
Range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
Range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
copyAllInRange()
}
注:
记得尽可能分享您正在做的事情的示例 sheet/screenshot,这样我们就能更好地想象您的目标,这也有助于我们为您提供更好的 answer/recommendation.
建议:
我已经测试了您的代码并根据您的代码创建了一个示例 sheets。您可以使用以下代码作为参考:
function copyAllInRange(){// Please select this copyAllInRange function before running the script
var ss2 = SpreadsheetApp.getActiveSpreadsheet();
var ns = ss2.getSheetByName("PDF_TEMP");
if (ns != null) {
ss2.deleteSheet(ns);}
ns = ss2.insertSheet();
ns.setName("PDF_TEMP");
var sheet = ss2.getSheetByName("Factura");
var tr = sheet.getRange("C3:N59");
var pr = ns.getRange("A1:L55");
var columnWidths = SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS;
tr.copyTo(pr);
tr.copyTo(pr,columnWidths,false);
Logger.log("First Run: Done running copyAllInRange()"); //Added a log line so that you can track how the code runs in Execution logs on the Apps Script editor
merge();//last function to be run before the code ends
}
function merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var range_Logo = sheet.getRange('C11:D16').merge();
var range_Bottom = sheet.getRange('C50:J52').merge();
range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
Logger.log("Second Run: Done running merge()"); //Added a log line so that you can track how the code runs in Execution logs on the Apps Script editor
}
我已经更正了您上面的一些代码,因为您一直在使用不正确的命名约定 (PascalCase) on some of your variable names such as var SS =
renamed to (CamelCase) var ss =
。这是因为在命名变量、数组或其他元素时,总是以小写字母或“CamelCase”开头。使用大写字母或“PascalCase”用于命名函数、类 和其他对象,当您在命名变量时使用它可能会在代码中出现问题
这是我的示例 PDF_TEMP Sheet:
这是我的示例 Factura Sheet:
在 运行 代码之后,这是 PDF_TEMP sheet 上的结果:
执行日志结果如下:
我刚开始编写代码,需要一些帮助。我正在制作 google 张纸。在下面的代码中,我试图在 copyAllInRange()
函数中调用 Merge()
函数。我看到了很多例子,但我对如何去做有点困惑。这两个功能都运行良好;我不知道如何将一个函数调用到另一个函数中。
objective是运行copyAllInRange()
;并在函数末尾将 Merge()
函数调用到 运行.
function Merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var Range_Logo = sheet.getRange('C11:D16').merge();
var Range_Bottom = sheet.getRange('C50:J52').merge();
Range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
Range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
}
function copyAllInRange(){
var SS = SpreadsheetApp.getActiveSpreadsheet();
var NS = SS.getSheetByName("PDF_TEMP");
if (NS != null) {
SS.deleteSheet(NS);}
NS = SS.insertSheet();
NS.setName("PDF_TEMP");
var Sheet = SS.getSheetByName("Factura");
var TR = Sheet.getRange("C3:N59");
var PR = NS.getRange("A1:L55");
var columnWidths = SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS
TR.copyTo(PR);
TR.copyTo(PR,columnWidths,false);
}
Both are in the same script file; both work independently.
可以在合并函数的最后调用第二个函数
function Merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var Range_Logo = sheet.getRange('C11:D16').merge();
var Range_Bottom = sheet.getRange('C50:J52').merge();
Range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
Range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
copyAllInRange()
}
注:
记得尽可能分享您正在做的事情的示例 sheet/screenshot,这样我们就能更好地想象您的目标,这也有助于我们为您提供更好的 answer/recommendation.
建议:
我已经测试了您的代码并根据您的代码创建了一个示例 sheets。您可以使用以下代码作为参考:
function copyAllInRange(){// Please select this copyAllInRange function before running the script
var ss2 = SpreadsheetApp.getActiveSpreadsheet();
var ns = ss2.getSheetByName("PDF_TEMP");
if (ns != null) {
ss2.deleteSheet(ns);}
ns = ss2.insertSheet();
ns.setName("PDF_TEMP");
var sheet = ss2.getSheetByName("Factura");
var tr = sheet.getRange("C3:N59");
var pr = ns.getRange("A1:L55");
var columnWidths = SpreadsheetApp.CopyPasteType.PASTE_COLUMN_WIDTHS;
tr.copyTo(pr);
tr.copyTo(pr,columnWidths,false);
Logger.log("First Run: Done running copyAllInRange()"); //Added a log line so that you can track how the code runs in Execution logs on the Apps Script editor
merge();//last function to be run before the code ends
}
function merge(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('PDF_TEMP');
var range_Logo = sheet.getRange('C11:D16').merge();
var range_Bottom = sheet.getRange('C50:J52').merge();
range_Bottom.setHorizontalAlignment("center").setVerticalAlignment("middle");
range_Logo.setHorizontalAlignment("center").setVerticalAlignment("middle");
Logger.log("Second Run: Done running merge()"); //Added a log line so that you can track how the code runs in Execution logs on the Apps Script editor
}
我已经更正了您上面的一些代码,因为您一直在使用不正确的命名约定 (PascalCase) on some of your variable names such as var SS =
renamed to (CamelCase) var ss =
。这是因为在命名变量、数组或其他元素时,总是以小写字母或“CamelCase”开头。使用大写字母或“PascalCase”用于命名函数、类 和其他对象,当您在命名变量时使用它可能会在代码中出现问题
这是我的示例 PDF_TEMP Sheet:
这是我的示例 Factura Sheet:
在 运行 代码之后,这是 PDF_TEMP sheet 上的结果:
执行日志结果如下: