Скрипт со средним значением 9 с за выполнение, обеспечивающий 145 с за выполнение - PullRequest
0 голосов
/ 24 января 2020

Этот сценарий в 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);
}

Если включить его запуск каждые 10 минут через script.google.com автоматический c триггер, для полного запуска требуется 145 секунд:

enter image description here

Есть ли в скрипте что-то не так, и это делает его случиться? Мне нужна помощь, я оставлю эту таблицу здесь на тот случай, если кто-нибудь захочет взглянуть на происходящее:

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

1 Ответ

2 голосов
/ 24 января 2020

Возможно, вы сможете ускорить выполнение путем пакетирования операций с использованием 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());
}

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...