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