繁体   English   中英

平均每次执行 9 秒的脚本,每次执行交付 145 秒

[英]Script with an average of 9s per execution, delivering 145s per execution

我今天早些时候在 GAS 中创建这个脚本时,测试平均每次执行 9 秒:

function ProjetoNovasLigas() {
  var ss = SpreadsheetApp.getActive();
  ss.getRange('Página1!I2:N').copyTo(ss.getRange('Página1!P2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  ss.getRange('Página1!Z2:Z').copyTo(ss.getRange('Página1!S2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  ss.getRange('Página1!Y2:Y').copyTo(ss.getRange('Página1!U2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  ss.getRange('Página1!A2').setFormula('=TEXT(NOW(),"yyyy/mm/dd hh:mm")');
  ss.getRange('Página1!A2').copyTo(ss.getRange('Página1!A2'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
}

当通过script.google.com自动触发启用它每10分钟运行一次时,完全运行需要145s

在此处输入图片说明

脚本中是否有任何错误并导致它发生的地方? 我需要帮助,如果有人想看看可能发生的事情,我会将电子表格留在这里:

https://docs.google.com/spreadsheets/d/15T4UPVtEHv43DLomKcTmdaPuGWMsBUoO7bLvlOhab4k/edit?usp=sharing

您可以通过使用setValues()和数组操作批量操作来加快执行速度。

示例脚本:

function archivr() {
  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Página1');
  var lr = sh.getLastRow();
  var values = sh.getRange('I2:Z' + lr).getValues();
  values.forEach(function(row){
    row.push("", row[16]); //[16] = Col Y; Move Col Y to the right of Col Z
    row.splice(6, 11);//Remove Col N to Col Y
  });
  sh.getRange(2,12, values.length, values[0].length).setValues(values); //set modified values to Col P
  sh.getRange('A2').setValue(new Date());
}

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM