Google Sheet脚本错误:“服务超时:电子表格”。如何优化Google Apps脚本

时间:2018-02-08 10:32:15

标签: google-apps-script google-sheets

运行Google Sheet脚本时,我总是遇到以下错误:

服务超时:电子表格(第10行,文件“代码”)

脚本应该将整个工作表中的整个工作表复制并粘贴(仅值)到另一个工作表。 问题是源表非常大,这就是我猜我得到错误的原因。源代码表以编程方式填充,但通常大约8-10k行

当我在较小的数据集上使用相同的脚本时,它可以很好地工作。

不幸的是,我不是开发人员而只是营销人员,所以任何人都可以帮我优化脚本,以便在5分钟的限制下更快地运行吗?

这是脚本

function cloneGoogleSheet(ssA, ssB) {
  var sss = SpreadsheetApp.openById('sheet_id');
  var ss = sss.getSheetByName('Sheet1');
  var SRange = ss.getDataRange();
  var A1Range = SRange.getA1Notation();
  var SData = SRange.getValues();
  var tss = SpreadsheetApp.openById('sheet_id');
  var ts = tss.getSheetByName('Script'); 
  ts.clear({contentsOnly: true});
  ts.getRange(A1Range).setValues(SData);
}; 

谢谢!

杰克

1 个答案:

答案 0 :(得分:0)

试试这个

function cloneGoogleSheet(ssA, ssB) {
    var targetSpreadSheet = SpreadsheetApp.openById(TARGET_SPREADSHEET_ID);
    var targetSheet = targetSpreadSheet.getSheetByName(TARGET_SHEET_NAME);
    targetSpreadSheet.deleteSheet(targetSheet);
    SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID).getSheetByName(SOURCE_SHEET_NAME).copyTo(targetSpreadSheet);
}

如果要重命名工作表,则可以使用setName()

如果我的代码中有任何错误,或者它无效,请告诉我。

参考文献:

https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#deletesheetsheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#copytospreadsheet

https://developers.google.com/apps-script/reference/spreadsheet/sheet#setnamename