javascript - 如何减慢 Google 脚本速度

标签 javascript google-apps-script google-sheets

我的 Google 脚本生成的数据放入我的“sheet6”中。然后 Sheets 处理这些数据,我想跟踪每次迭代 (k) 的结果。我将结果(“传递”)数据返回到我的脚本,但这每次迭代都会花费大量时间。我知道像这样使用 getValue 是不好的做法。我认为更好的方法是首先跟踪工作表中的任何“数据更改”,然后再将任何内容传递回我的脚本。问题是脚本执行得很快,但 Google Sheets 计算过程却相当慢。有什么方法可以将数据从脚本传递到工作表,等待,允许工作表在脚本进入下一个场景之前进行计算吗?

function RunScenarios() {
  function shuffleArray(array) {
    for (var i = array.length - 1; i > 0; i--) {
        var j = Math.floor(Math.random() * (i + 1));
        var temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
}
  var aa = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Run Program");
  var scenarios = aa.getRange('H19').getValue();
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet6");
  var range = ss.getRange("b14:av14");
  var m = 0
  var picks = [];
  for(var k = 1; k <= scenarios; k++) {

    if (m = 47) {
      m = 0
    }
  for(var j = 1; j < 48; j++) {
      var array1 = [1+m, 2+m, 3+m, 4+m, 5+m, 6+m, 7+m, 8+m, 9+m, 10+m, 11+m, 12+m, 13+m, 14+m, 15+m, 16+m, 17+m, 18+m, 19+m, 20+m];
  shuffleArray(array1);
  picks = addToPicks(array1,picks);
   m = m + 1
  }
      ss.getRange(6, 2, 1, 47).setValues([picks]);  // passing all the picks to the sheet
   picks = [];
    var passingscenarios = aa.getRange('passing').getValue();  // getting the result from the sheet takes a lot of time
//    Eventually, I want to keep track of how many passingscenarios I've got here before exiting

}
    var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange('A1').activate();
      spreadsheet.getSheetByName('Chart4').showSheet()
     .activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Chart4'), true);

}

function addToPicks(arr,picks) {
    if (picks.indexOf(arr[0]) === -1) {
        picks.push(arr[0])
        return picks
    }
    arr.shift();
    return addToPicks(arr,picks);
}

最佳答案

要在 Apps 脚本中插入暂停,请使用 Utilities.sleep(milliseconds)但首先您也可以添加 SpreadsheetApp.flush()以确保脚本所做的更改已传递到电子表格。

关于javascript - 如何减慢 Google 脚本速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51124571/

相关文章:

javascript - 将 JSON 对象分配给来自 Google Sheets URL 的变量?

google-apps-script - Google 应用程序脚本 - 在 onOpen 触发器中使用 setInterval - 错误 "undefined"

javascript - three.js ES6 如何只导入特定模块

javascript - 如何运行长脚本并向 html 对话框发送持续反馈

php - 如何将变量从 PHP 传递到 JS,对变量执行数学运算,然后输出到页面元素

javascript - 加快数组操作 Google Apps 脚本的执行速度

google-apps-script - 允许脚本编辑锁定的单元格

google-apps-script - 从 Google 电子表格接收实时更新

javascript - 如何根据屏幕分辨率发送完全不同的HTML内容?

javascript - PHP 和 CSS 的这一部分需要 JavaScript 吗?或者单独用css可以吗?