【问题标题】:Trying to understand the purpose of getRange function试图理解 getRange 函数的目的
【发布时间】:2020-07-10 01:44:06
【问题描述】:

我正在努力触发,但是从行开始 - Spreadsheet.GetRange(2, 19, 15, 3) 不会通过。阻止我运行的消息:'异常:参数(字符串、数字、数字、数字)与'的方法签名不匹配。

function sendEmails2() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Refund by Bank'), true);

  // Fetch the range of cells A2:O7
  var dataRange = spreadsheet.getRange(2, 20, 15, 3);
  // Fetch values for each row in the Range.
  var data = dataRange.getValues();
  
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var emailAddress = row[19]; // 19th column
    var message = row[20]; // 21th column
    var emailSent = row[21]; // 20th column
    if (emailSent !== EMAIL_SENT) { // Prevents sending duplicates
      var subject = 'Sending emails from a Spreadsheet';
      MailApp.sendEmail(emailAddress, subject, message);
      sheet.getRange(2 + i, 3).setValue(EMAIL_SENT);
      // Make sure the cell is updated right away in case the script is interrupted
      SpreadsheetApp.flush();
    }
  }
}

https://docs.google.com/spreadsheets/d/1os7Z4vsj4lwynuepZRZnScRBiqyiKuM-gsFg-dVecYw/edit#gid=0

【问题讨论】:

    标签: javascript email google-apps-script google-sheets


    【解决方案1】:

    答案:

    您的问题是您在 getRange()Spreadsheet 的方法上使用 getRange()Sheet 的方法签名。

    更多信息:

    Class SpreadsheetClass Sheet 都有一个名为 getRange() 的方法。

    根据Spreadsheet.getRange() 的文档,只有getRange(a1Notation)

    getRange(a1Notation):

    返回以 A1 表示法或 R1C1 表示法指定的范围。

    对于Sheet.getRange(),存在getRange(row, column, numRows, numColumns)

    getRange(row, column, numRows, numColumns)

    返回具有给定坐标的左上单元格和给定行数和列数的范围。

    因为您的变量 spreadsheet 定义为:

    var spreadsheet = SpreadsheetApp.getActive();
    

    它实际上是Spreadsheet 类的实例,而不是Sheet。因此,您使用的符号无效。

    代码修复:

    从以下位置更改您的 dataRange 定义:

    var dataRange = spreadsheet.getRange(2, 20, 15, 3);
    

    到:

    var dataRange = spreadsheet.getActiveSheet().getRange(2, 20, 5, 3);
    

    参考资料:

    【讨论】:

      【解决方案2】:

      它返回指定范围内的行和列。前 2 个参数是起始行和列,后跟 2 个范围限制。因此,使用前 2 个参数指定起始行和列,使用其他两个参数指定范围内的行数和列数,例如:

      getRange(1,A,3,c) 获取范围 1-4 行和 A-D 列

      【讨论】:

      • 感谢您的超快速响应。我想从 #2 行和 #19 列开始,然后得到 15 行和 3 列的范围,但我仍然收到相同的错误消息。我需要用列的字母代替数字吗?
      • 这是不正确的。 getRange() 中不能使用字母。您要么必须使用像 getRange("A1:D4") 这样的 A1 表示法,要么必须像 getRange(1, 1, 4, 4) 那样指定起始行、结束行以及列数和行数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-19
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多