【问题标题】:Looping through Google Sheet循环浏览 Google 表格
【发布时间】:2019-08-14 22:59:04
【问题描述】:

我很难使用 Ranges 并弄清楚为什么我需要在 getRange 中添加 i+1 以在我的循环中获取正确的单元格。我不确定是因为我在变量之前递增还是与初始值有关?

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getDataRange();
var values = range.getValues();`

for (var i = 3; i < 30; ++i) {
  var row = values[i];
  var msgSent = row[3];
  sheet.getRange(i + 1, 4).setValue("ALERTED");

感谢任何帮助!

【问题讨论】:

    标签: for-loop google-apps-script google-sheets


    【解决方案1】:

    .getRange() 仅使用基于整数的引用,而 values 的二维数组需要使用从零开始的方法来引用。

    values 中的第一行(数组)是values[0],但.getRange() 使用.getRange(1, 1) 来引用工作表的第一行第一列。第一行的第一列值为values[0][0]。

    现在,如果您要遍历 30 行左右并希望一次设置所有值,这比一个接一个设置要好得多,它看起来像这样......

    var s = ss.getSheetByName('Sheet1');
    var newValues = [];
    for (var i = 3; i < 30; ++i) {
      var row = values[i];
      var msgSent = row[3];
      newValues.push(["ALERTED"]);
    }
    s.getRange(4, 4).offset(0, 0, newValues.length).setValues(newValues);
    

    【讨论】:

    • 这很有意义!有没有办法对.get 使用零方法?这是我较大脚本的一部分,它显示是否已发送电子邮件,因此我必须单独循环。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2020-10-14
    • 2016-08-08
    • 2019-08-30
    • 2020-01-02
    • 2011-11-18
    相关资源
    最近更新 更多