Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使这个google sheets脚本代码更短/更快?_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何使这个google sheets脚本代码更短/更快?

Javascript 如何使这个google sheets脚本代码更短/更快?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,这段代码很容易解释。只是有很多范围,我需要独立随机。例如,range('W1:W4')不应该与range('W5:W8')混淆,因此我不能只是随机化range('W1:W80')。任何帮助或建议都会很好!谢谢。目前,代码的运行时间比我希望的要长一点(14秒) 将放入getRange方法中的所有值放入一个数组中,并在其上循环。对于每个range调用getRange和randomize方法 function clickStart() { var ranges = ['T2:T21', 'Y1:

这段代码很容易解释。只是有很多范围,我需要独立随机。例如,range('W1:W4')不应该与range('W5:W8')混淆,因此我不能只是随机化range('W1:W80')。任何帮助或建议都会很好!谢谢。目前,代码的运行时间比我希望的要长一点(14秒)


将放入
getRange
方法中的所有值放入一个数组中,并在其上循环。对于每个
range
调用
getRange
randomize
方法

function clickStart() {

  var ranges = ['T2:T21', 'Y1:Y20', 'Y21:Y40', 'Y41:Y60']; // Add all cells to this array.
  var spreadsheet = SpreadsheetApp.getActive();
  for (let range of ranges) {
    spreadsheet.getRange(range).randomize();
  }

};
但是在这一点上,代码仍然需要很长时间,并且在工作时会阻塞线程。将它包装在一个
Promise
中,当循环准备好使代码异步时,它就会解决这个问题。这将确保其余代码仍将运行

function clickStart() {

  return new Promise(resolve => {

    var ranges = ['T2:T21', 'Y1:Y20', 'Y21:Y40', 'Y41:Y60']; // Add all cells to this array.
    var spreadsheet = SpreadsheetApp.getActive();
    for (let range of ranges) {
      spreadsheet.getRange(range).randomize();
    }
    resolve(spreadsheet);

  });

};

将放入
getRange
方法中的所有值放入一个数组中,并在其上循环。对于每个
range
调用
getRange
randomize
方法

function clickStart() {

  var ranges = ['T2:T21', 'Y1:Y20', 'Y21:Y40', 'Y41:Y60']; // Add all cells to this array.
  var spreadsheet = SpreadsheetApp.getActive();
  for (let range of ranges) {
    spreadsheet.getRange(range).randomize();
  }

};
但是在这一点上,代码仍然需要很长时间,并且在工作时会阻塞线程。将它包装在一个
Promise
中,当循环准备好使代码异步时,它就会解决这个问题。这将确保其余代码仍将运行

function clickStart() {

  return new Promise(resolve => {

    var ranges = ['T2:T21', 'Y1:Y20', 'Y21:Y40', 'Y41:Y60']; // Add all cells to this array.
    var spreadsheet = SpreadsheetApp.getActive();
    for (let range of ranges) {
      spreadsheet.getRange(range).randomize();
    }
    resolve(spreadsheet);

  });

};

这工作做得很好!是的,代码仍然需要很长时间,但它更干净!这正是我想要的,谢谢你!这工作做得很好!是的,代码仍然需要很长时间,但它更干净!这正是我想要的,谢谢你!