Google App脚本中的脚本时间超过了

时间:2017-08-31 21:40:35

标签: google-apps-script google-sheets

这是我第一次使用Google Script进行编程时,我无法弄清楚如何添加一个函数来规避Google超出处理时间的错误消息。能否请你帮忙?

程序获取订购的条形和品脱数量,并将它们引用到另一个工作表中,该工作表具有计算成本和输出值的计算器。非常感谢帮助

/**
 * 
 *
 */

function STBIBOL()
{

  var r = 6
  var destclm = 11
  var pintsclm = 105
  var barsclm = 101

  var spreadsheet_url = 'https://docs.google.com/spreadsheets/d/1cqgdo_pgJ4n0xhXqMah24g6jjv7sfl2o92k1pwXNUuo/edit#gid=532254312';
  var sheet_name = 'BOLs Entered for Fulfillment';
  var sheet_name1 = 'STBI Calculator';

  var ss = SpreadsheetApp.openByUrl(spreadsheet_url);
  var sheet = ss.getSheetByName(sheet_name);
  var sheet1 = ss.getSheetByName(sheet_name1);
  var lastRow = sheet.getLastRow();

  for(i =1; i< 20; i++)
  {
    var rangeD = sheet.getRange(r,destclm)
    var dest = rangeD.getValue()
    var rangeS = sheet.getRange(r,pintsclm)
    var pints = rangeS.getValue()
    var rangeB = sheet.getRange(r, barsclm)
    var bars = rangeB.getValue()
    var range = sheet1.getRange(14,3)
    range.setValue(dest)
    var range2 = sheet1.getRange(11, 3)
    range2.setValue(pints)
    var range3 = sheet1.getRange(12, 3)
    range3.setValue(bars)
    var rangev = sheet1.getRange(8,3)
    var value = rangev.getValue()
    var range4 = sheet.getRange(r,110)
    range4.setValue(value)    
    r = r + 1
   }


}

1 个答案:

答案 0 :(得分:2)

不是在循环的每次运行中多次调用GAS服务,而是导致执行失败,您只需在一次调用中获取整个范围,如下所示:

 var range1 = sheet1.getRange(startRow, startColumn, numberOfRows, numberOfColumns);

如果第二张纸的范围与第一张纸具有相同的尺寸(相同的行数和列数),您可以简单地1)从原始纸张获取值作为二维数组

var values1 = range.getValues();

2)将值写入第二张

var range2 = sheet2.getRange(startRow, startColumn, numberOfRows, numberOfColumns);
range2.setValues(values1);