Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Google apps script 一段appscript代码运行缓慢?还是谷歌表单?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 一段appscript代码运行缓慢?还是谷歌表单?

Google apps script 一段appscript代码运行缓慢?还是谷歌表单?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,下面有一段代码,当它找到当前单元格的值时,运行时间约为6.87秒。它使我的代码的运行时间大约为7-8秒。在代码运行之后,Google Sheets的缓冲时间似乎要长得多。我似乎无法加快他们的速度 对于代码,我已经重写了几次代码,试图将数组放在我能放的地方。我添加了一个数据验证clear,希望它能更快地发现价值。对于GoogleSheets问题,我尝试了清除缓存数据,并尝试了两种不同的浏览器。似乎没有一个起作用 function onEdit () { var data = Spreadsheet

下面有一段代码,当它找到当前单元格的值时,运行时间约为6.87秒。它使我的代码的运行时间大约为7-8秒。在代码运行之后,Google Sheets的缓冲时间似乎要长得多。我似乎无法加快他们的速度

对于代码,我已经重写了几次代码,试图将数组放在我能放的地方。我添加了一个数据验证clear,希望它能更快地发现价值。对于GoogleSheets问题,我尝试了清除缓存数据,并尝试了两种不同的浏览器。似乎没有一个起作用

function onEdit () {
var data = SpreadsheetApp.getActiveSpreadsheet();
var ordersheet =data.getActiveSheet();
var reference = ordersheet.getSheetName();
var cleared = ordersheet.getActiveCell().clearDataValidations();

if(reference == "Order Sheet") { 

var ranged = ordersheet.getActiveRange();
var sheetName= ranged.getValue(); 
var pullName = data.getSheetByName(sheetName);
var datass = pullName.getRange(3, 1, pullName.getLastRow(), 
1).getValues();

var validationRule = 
SpreadsheetApp.newDataValidation() 
.requireValueInList(datass).build(); 
ordersheet.getActiveCell().offset(1, 0, 
15).setDataValidation(validationRule);

   var spreadsheet = SpreadsheetApp.getActiveSheet();
 var off = spreadsheet.getCurrentCell().offset(1, 5).activate();
 var row = spreadsheet.getCurrentCell().getRow();
 var col = spreadsheet.getCurrentCell().getColumn();

  var formulas = [

 ['=Iferror(INDEX(INDIRECT(R[-1]C[-5]&1),MATCH(R[0]C[-5],
  INDIRECT(R[-1]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'],
  ['=Iferror(INDEX(INDIRECT(R[-2]C[-5]&1),MATCH(R[0]C[-5],
  INDIRECT(R[-2]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'],
 ['=Iferror(INDEX(INDIRECT(R[-3]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-3]C[-5]&2),0),2),"Please Add Item to Customer Price 
 List")'],
 ['=Iferror(INDEX(INDIRECT(R[-4]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-4]C[-5]&2),0),2),"Please Add Item to Customer Price 
 List")'], 
 ['=Iferror(INDEX(INDIRECT(R[-5]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-5]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'], 
 ['=Iferror(INDEX(INDIRECT(R[-6]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-6]C[-5]&2),0),2),"Please Add Item to Customer Price 
 List")'],
 ['=Iferror(INDEX(INDIRECT(R[-7]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-7]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'],
  ['=Iferror(INDEX(INDIRECT(R[-8]C[-5]&1),MATCH(R[0]C[-5],
  INDIRECT(R[-8]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'],
  ['=Iferror(INDEX(INDIRECT(R[-9]C[-5]&1),MATCH(R[0]C[-5],
  INDIRECT(R[-9]C[-5]&2),0),2),"Please Add Item to Customer Price 
   List")'],
 ['=Iferror(INDEX(INDIRECT(R[-10]C[-5]&1),MATCH(R[0]C[-5],
 INDIRECT(R[-10]C[-5]&2),0),2),"Please Add Item to Customer Price 
  List")'],
  ['=Iferror(INDEX(INDIRECT(R[-11]C[-5]&1),MATCH(R[0]C[-5],
   INDIRECT(R[-11]C[-5]&2),0),2),"Please Add Item to Customer Price 
   List")'],
  ['=Iferror(INDEX(INDIRECT(R[-12]C[-5]&1),MATCH(R[0]C[-5],
   INDIRECT(R[-12]C[-5]&2),0),2),"Please Add Item to Customer Price 
    List")'],
  ['=Iferror(INDEX(INDIRECT(R[-13]C[-5]&1),MATCH(R[0]C[-5],
  INDIRECT(R[-13]C[-5]&2),0),2),"Please Add Item to Customer Price 
    List")'],
   ['=Iferror(INDEX(INDIRECT(R[-14]C[-5]&1),MATCH(R[0]C[-5],
   INDIRECT(R[-14]C[-5]&2),0),2),"Please Add Item to Customer Price 
    List")'],
    ['=Iferror(INDEX(INDIRECT(R[-15]C[-5]&1),MATCH(R[0]C[-5],
    INDIRECT(R[-15]C[-5]&2),0),2),"Please Add Item to Customer 
     Price List")']
    ];
   var area = spreadsheet.getRange(row,col,15);
   area.setFormulasR1C1(formulas);

      }};

代码适用于如何设置工作表,但我只需要它运行得更快。

是的,将公式写入工作表可能会花费一些时间,但我认为您可以尽可能快地完成。我发现用户倾向于过度使用onEdit功能。请记住,这是在服务器上运行的。您是否建议我尝试将onedit函数更改为仅在需要时调用?这通常是我的方法,因为我不喜欢无谓地浪费服务器资源,尤其是在侧边栏中单击按钮没有什么大不了的。但这是你的选择。谢谢你@Cooper真的很感谢你的反馈!。我把它从onEdit中取出来,它运行得更快,但在谷歌的工作表中,它的缓冲速度仍然非常慢。如果有任何更多的建议,我将很乐意使用它们!我不确定这是否会有帮助,但请尝试将SpreadsheetApp.flush()放在末尾。是的,将公式写入工作表可能会花费一些时间,但我认为您应该尽可能快地完成。我发现用户倾向于过度使用onEdit功能。请记住,这是在服务器上运行的。您是否建议我尝试将onedit函数更改为仅在需要时调用?这通常是我的方法,因为我不喜欢无谓地浪费服务器资源,尤其是在侧边栏中单击按钮没有什么大不了的。但这是你的选择。谢谢你@Cooper真的很感谢你的反馈!。我把它从onEdit中取出来,它运行得更快,但在谷歌的工作表中,它的缓冲速度仍然非常慢。如果有任何更多的建议,我将很乐意使用它们!我不确定这是否有用,但请尝试将SpreadsheetApp.flush()放在末尾。