【问题标题】:Google Apps Script .setvalues For loop not workingGoogle Apps Script .setvalues For 循环不起作用
【发布时间】:2017-05-08 23:44:18
【问题描述】:

循环的目标是使用单元格引用递增 1 的公式填充 5 列 A、B、C、D 和 E 的 797 行中的每个单元格。

例如从第 6 行开始的 A 列将具有公式“=indirect("'Data Repository'!A3++")"

从第 6 行开始的 B 列将具有公式“=indirect("'Data Repository'!B3++")"

当我运行该函数时会发生什么,但是它只填充 A 列。我检查了执行记录,并在第一列被填满后记录了执行成功。我尝试了各种变体无济于事。

以下是我测试的最后一个变体:

function indirect(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Fleet - Weekly V3");
  var formulaArray = [];
  var columns = ["A","B","C","D","E"];
  var row = 2;
  var text = '=indirect(\"\'Data Repository\'!';
  var headerRow = 6;
  var column;

  for(i = 0; i < 5; i++) {
    column = parseInt(i) + 1;
    formula = text + columns[i];
    for(i = 0; i < 797; i++) {
      row += 1;
      if (formulaArray.length == 797) {
        sheet.getRange(headerRow, column).offset(0, 0, formulaArray.length).setValues(formulaArray);
      } else {
        formulaArray.push([formula + row + '")']);
      }  
      Logger.log(formulaArray.length);
    }
    Logger.log(i)
    formulaArray = [];
  }
}

【问题讨论】:

    标签: arrays google-apps-script google-sheets


    【解决方案1】:

    这可能是您出错的地方 - 您需要创建变量 i(var i = 0 而不仅仅是 i = 0),如果您要嵌套循环,则需要增加不同的变量(第一个循环使用 i,然后用 j 嵌套,然后根据需要用 k 等嵌套)

     for(var i = 0; i < 5; i++) {
      column = parseInt(i) + 1;
      formula = text + columns[i];
       for(var j = 0; j < 797; j++) {
    

    未经测试,但我相信如果你只是替换它应该可以工作。

    【讨论】:

      【解决方案2】:

      你的问题在于你的循环。您正在使用两次“i”变量。更改您嵌套的 for 循环以迭代变量“j”或“i”以外的其他内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-13
        • 2013-12-31
        • 2019-08-27
        • 2018-05-26
        相关资源
        最近更新 更多