Google apps script 如何传递正确的参数

Google apps script 如何传递正确的参数,google-apps-script,Google Apps Script,我收到以下错误消息: 找不到方法getRange((类),number)。(第37行,文件“回复”) 问题似乎是“row”作为一个班级通过了?我不知道发生了什么事。但我需要能够在Main()中递增,因为它是基于EmailFormConfirmation的运行方式在时间驱动触发器上调用的。这不是应用程序脚本问题,而是一个糟糕的程序构造 while循环永远不会工作,因为在循环中包含了一个强制函数退出的返回 如果移动返回,它将永远不会结束,因为电子邮件值不会在循环>>无限循环中更新 row+=1不一

我收到以下错误消息: 找不到方法getRange((类),number)。(第37行,文件“回复”)


问题似乎是“row”作为一个班级通过了?我不知道发生了什么事。但我需要能够在Main()中递增,因为它是基于EmailFormConfirmation的运行方式在时间驱动触发器上调用的。

这不是应用程序脚本问题,而是一个糟糕的程序构造

  • while循环永远不会工作,因为在循环中包含了一个强制函数退出的返回
  • 如果移动返回,它将永远不会结束,因为电子邮件值不会在循环>>无限循环中更新
  • row+=1
    不一定将row作为整数递增(它可能成为
    row1
    ),而是使用
    row++
  • 我真的不明白main中第二行的目的:
    row=EmailFormConfirmation(row)因为对
    EmailFormConfirmation
    的第一次调用已在循环中递增
下面是一个工作代码(不确定它是否符合您的要求):


下面的代码现在似乎可以工作了

function send(row, sheet, email){
  var name = sheet.getRange(row,3).getValue() + " " + sheet.getRange(row,4).getValue(); // combines fields for first and last names
  var subject = "PROJECT: REPLY Thank you for RSVPing to " + sheet.getSheetName() + "!" // sheet should be manually named based on 
  //var url = 
  var body = "Hello " + name+ ","+'\n'+'\n'+
      subject + '\n';
  MailApp.sendEmail( email, subject, body ); // or { htmlbody: ""}
}

function Main() {
  var ss = SpreadsheetApp.openById("1ssxFwNRi7r4G5cbhlNYXj5Fm9XhbB0B242Pen3ZTmE4");  // Id indicated in url
  var sheet = ss.getActiveSheet();
  if (sheet.getRange(2,9).getValue() == "") {
    var row = 2;
  }
  else {
    var row = sheet.getRange(2,9).getValue() + 2;
  }
  sheet.getRange(1,9).setValue("Emails sent");
  while ( sheet.getRange(row,2).getValue() != "" ) {
    send(row, sheet, sheet.getRange(row,2).getValue());
    row += 1;
    sheet.getRange(2,9).setValue( row - 2 );
  }
}

这将在任何时候保存运行该功能所需的数据,而无需重新发送到任何电子邮件地址。

记录器是否会随时间保留一个值?i、 我想要一个占位符,以确保我不会最终滥发一个人的电子邮件地址。目前,我正在向给定电子表格中的一个单元格写入数据。这是一个很好的做法还是我应该找到另一种方法?不!记录器不是存放物品的地方。。。通过使用背景色标记发送的行来使用电子表格,例如。。。或者存储在scriptProperties中…如果您觉得答案有用,那么接受它怎么样;-)?我会的,但是在你回答之前我完全修改了代码。它现在起作用了,或多或少
function Main() {
  var row = EmailFormConfirmation( 2 );
  Logger.log('row final value='+row);
}

function EmailFormConfirmation(row){

  var col = 2  // column to find email addresses

  // Main script
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var email = sheet.getRange(row, col).getValue();

  while ( email != "" ) {
    var email = sheet.getRange(row, col).getValue();
    var name = sheet.getRange(row,3).getValue() + " " + sheet.getRange(row,4).getValue(); // combines fields for first and last names
    var subject = "PROJECT: REPLY Thank you for RSVPing to " + sheet.getSheetName() + "!"
    var message = "Hello " + name+ ","+'\n'+'\n'+
      subject + '\n';
//    MailApp.sendEmail( email, subject, message );    
    row++;
    Logger.log(row);
  }
  return row;
}
function send(row, sheet, email){
  var name = sheet.getRange(row,3).getValue() + " " + sheet.getRange(row,4).getValue(); // combines fields for first and last names
  var subject = "PROJECT: REPLY Thank you for RSVPing to " + sheet.getSheetName() + "!" // sheet should be manually named based on 
  //var url = 
  var body = "Hello " + name+ ","+'\n'+'\n'+
      subject + '\n';
  MailApp.sendEmail( email, subject, body ); // or { htmlbody: ""}
}

function Main() {
  var ss = SpreadsheetApp.openById("1ssxFwNRi7r4G5cbhlNYXj5Fm9XhbB0B242Pen3ZTmE4");  // Id indicated in url
  var sheet = ss.getActiveSheet();
  if (sheet.getRange(2,9).getValue() == "") {
    var row = 2;
  }
  else {
    var row = sheet.getRange(2,9).getValue() + 2;
  }
  sheet.getRange(1,9).setValue("Emails sent");
  while ( sheet.getRange(row,2).getValue() != "" ) {
    send(row, sheet, sheet.getRange(row,2).getValue());
    row += 1;
    sheet.getRange(2,9).setValue( row - 2 );
  }
}