Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌表单的脚本时间限制_Google Apps Script_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script 谷歌表单的脚本时间限制

Google apps script 谷歌表单的脚本时间限制,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,我需要更改大量电子表格中特定表格(LISTAFINAL)相同单元格中的一些公式,这些表格位于同一文件夹中。但它在谷歌脚本6分钟的时间限制下停止了,只在9个电子表格中进行了更改,并发出消息:Erro-超过了最大执行时间 我的目标: 我想知道是否有任何方法可以加快这个过程,或者在更多的电子表格中进行更改,或者两者兼而有之。代码如下: function validacao(){ var folder = DriveApp.getFolderById("FOLDER ID");

我需要更改大量电子表格中特定表格(LISTAFINAL)相同单元格中的一些公式,这些表格位于同一文件夹中。但它在谷歌脚本6分钟的时间限制下停止了,只在9个电子表格中进行了更改,并发出消息:
Erro-超过了最大执行时间

  • 我的目标:
  • 我想知道是否有任何方法可以加快这个过程,或者在更多的电子表格中进行更改,或者两者兼而有之。代码如下:

    function validacao(){
      var folder = DriveApp.getFolderById("FOLDER ID");
      var x = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
      while (x.hasNext()) {
        SpreadsheetApp.open(x.next()).getSheets().forEach(sheet => {
          sheet.getRange('LISTAFINAL!F5:F15').activate();
          sheet.getRange('LISTAFINAL!F5').setValue('=ALUNO1!$F$167');
          sheet.getRange('LISTAFINAL!F6').setValue('=ALUNO2!$F$167');
          sheet.getRange('LISTAFINAL!F7').setValue('=ALUNO3!$F$167');
          sheet.getRange('LISTAFINAL!F8').setValue('=ALUNO4!$F$167');
          sheet.getRange('LISTAFINAL!F9').setValue('=ALUNO5!$F$167');
          sheet.getRange('LISTAFINAL!F10').setValue('=ALUNO6!$F$167');
          sheet.getRange('LISTAFINAL!F11').setValue('=ALUNO7!$F$167');
          sheet.getRange('LISTAFINAL!F12').setValue('=ALUNO8!$F$167');
          sheet.getRange('LISTAFINAL!F13').setValue('=ALUNO9!$F$167');
          sheet.getRange('LISTAFINAL!F14').setValue('=ALUNO10!$F$167');
          sheet.getRange('LISTAFINAL!F15').setValue('=ALUNO11!$F$167');
        });
      }
    }
    
    说明:
    • 您可以迭代每个电子表格文件的所有工作表。您的目标是只获得一张表格,并将公式放在特定的单元格中。因此,您可以摆脱
      forEach
      循环

    • 使用数组而不是迭代地使用多个google apps脚本函数是一个很好的选择

    • 例如,在代码中,您使用
      getRange
      setValue
      11次。如果将公式值存储在数组中,则只需使用单个
      getRange
      setValues
      即可存储公式值

    解决方案: 说明:
    • 您可以迭代每个电子表格文件的所有工作表。您的目标是只获得一张表格,并将公式放在特定的单元格中。因此,您可以摆脱
      forEach
      循环

    • 使用数组而不是迭代地使用多个google apps脚本函数是一个很好的选择

    • 例如,在代码中,您使用
      getRange
      setValue
      11次。如果将公式值存储在数组中,则只需使用单个
      getRange
      setValues
      即可存储公式值

    解决方案:
    我最初的想法是一个数组系统,我尝试了一些解决方案,但我不知道如何为这个脚本编写它。有些公式不起作用,但您的公式又很快地完成了这项工作。现在,一个包含12个电子表格的文件夹仅在13秒钟内处理完毕。再次非常感谢。我最初的想法是一个数组系统,我尝试了一些解决方案,但我不知道如何为这个脚本编写它。有些公式不起作用,但您的公式又很快地完成了这项工作。现在,一个包含12个电子表格的文件夹仅在13秒钟内处理完毕。再次非常感谢。
    function validacao(){
      const folder = DriveApp.getFolderById("FOLDER ID");
      const x = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
      const formulas = Array(11).fill().map((_, i) => [`=ALUNO${i+1}!$F$167`]);
      while (x.hasNext()) {
          let ss_target = SpreadsheetApp.open(x.next());
          let sh = ss_target.getSheetByName("LISTAFINAL");
          sh.getRange('F5:F15').setValues(formulas);
      }
    }