簡體   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