【问题标题】:Call a function within another function in the same script in Google Apps Script在 Google Apps 脚本中的同一脚本中调用另一个函数中的函数
【发布时间】:2021-04-05 19:02:48
【问题描述】:

我是编写代码的新手,我需要一些帮助。我正在研究谷歌表格。在下面的代码中,我试图在copyAllInRange() 函数中调用Merge() 函数。我看到了很多例子,但我对如何做到这一点有点困惑。这两个功能都运行良好;我不知道如何将一个函数调用到另一个函数中。

目标是运行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);  
 }

两者都在同一个脚本文件中;两者都独立工作。

【问题讨论】:

    标签: function google-apps-script google-sheets spreadsheet


    【解决方案1】:

    注意:

    请记住尽可能分享您正在处理的工作的示例表/屏幕截图,以便我们能够更好地可视化您的目标,这也将有助于我们为您提供更好的答案/建议。

    推荐:

    我已经测试了您的代码并根据您的代码创建了示例表。您可以使用以下代码作为参考:

     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),例如将 var SS = 重命名为 (@987654322 @)var ss =。这是因为在命名变量、数组或其他元素时,总是以小写字母或“CamelCase”开头。使用大写字母或“PascalCase”来命名函数、类和其他对象,当您在命名变量时使用它可能会在代码中出现问题

    这是我的示例 PDF_TEMP 表:

    这是我的样本资料表:

    运行代码后,PDF_TEMP 表上的结果如下:

    执行日志结果如下:

    【讨论】:

    • 感谢您的尝试、更正代码和您的指导;现在运行时没有问题。一切正常!
    • 不客气 :)。您也可以接受此答案,以便其他也在寻找相同问题的人能够看到此帖子。
    【解决方案2】:

    可以在合并函数的最后调用第二个函数

    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()
     
     }

    【讨论】:

    • 感谢您的回答。我试过了,但还是不行。首先,它必须复制所有数据,然后合并单元格。
    猜你喜欢
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多