电子邮件脚本中返回 "undefined" 或无数据的变量
Variables returning "undefined" or no data in email script
我正在尝试让脚本从 sheet 发送确认电子邮件,由 "On form submit" 触发。
除了 2 个变量之外,这一切都有效,脚本似乎没有接受。
其中一个变量来自另一个函数,并粘贴到 sheet 中。
另一个变量是每次输入新数据时在 sheet 中创建的参考编号。
代码:
function myFunction(e) {
var userName = e.values[2]; //this info comes from form and works
var teamName = e.values[1]; //this info comes from form and works
var recipient = e.values[4]; //this info comes from form and works
var refNumber = e.values[22]; //this info comes from an array in a column and returns "undefined"
var NetballWeekend = e.values[6]; //this info comes from form and works
var editURL = e.values[20]; //this info comes from another function which pastes it into column "U" and returns blank
var subject = "SunSports Netball Weekend - Your Booking for " + teamName + "." ;
var body = "Hello " + userName + "."
+ "\n" + "We have received your booking form for the " + NetballWeekend + "."
e.values
是事件对象绑定到事件onFormSubmit
- Event object 表示这些值与事件相关联,或者换句话说,对于 formSubmit,它是通过表单提交的值
- 如果您使用其他值填充表单响应中新提交的值行,则无法使用
e.values
检索这些值
- 相反,您可以使用
e.range.getRow()
检索包含最新表单提交的行号,并检索手动添加的值,例如getRange(e.range.getRow(), 21).getValue()
- 请注意,如果在提交表单数据后在后面添加 U 和 W 列中的值,它们可能无法在表单提交时直接可用,但会稍有延迟
- 在这种情况下,它们可能是
undefined
onFormSubmit,最好的方法是等待,例如通过在检索这些值 之前合并 Utilities.sleep()
样本:
function myFunction(e) {
Utilities.sleep(1000);
var range = e.range;
var row = range.getRow();
var sheet = range.getSheet();
var userName = e.values[2]; //this info comes from form and works
var teamName = e.values[1]; //this info comes from form and works
var recipient = e.values[4]; //this info comes from form and works
var refNumber = sheet.getRange(row, 23).getValue();
var NetballWeekend = e.values[6]; //this info comes from form and works
var editURL = sheet.getRange(row, 21).getValue();
var subject = "SunSports Netball Weekend - Your Booking for " + teamName + "." ;
var body = "Hello " + userName + "."
+ "\n" + "We have received your booking form for the " + NetballWeekend + "."
...
}
我正在尝试让脚本从 sheet 发送确认电子邮件,由 "On form submit" 触发。 除了 2 个变量之外,这一切都有效,脚本似乎没有接受。 其中一个变量来自另一个函数,并粘贴到 sheet 中。 另一个变量是每次输入新数据时在 sheet 中创建的参考编号。
代码:
function myFunction(e) {
var userName = e.values[2]; //this info comes from form and works
var teamName = e.values[1]; //this info comes from form and works
var recipient = e.values[4]; //this info comes from form and works
var refNumber = e.values[22]; //this info comes from an array in a column and returns "undefined"
var NetballWeekend = e.values[6]; //this info comes from form and works
var editURL = e.values[20]; //this info comes from another function which pastes it into column "U" and returns blank
var subject = "SunSports Netball Weekend - Your Booking for " + teamName + "." ;
var body = "Hello " + userName + "."
+ "\n" + "We have received your booking form for the " + NetballWeekend + "."
e.values
是事件对象绑定到事件onFormSubmit
- Event object 表示这些值与事件相关联,或者换句话说,对于 formSubmit,它是通过表单提交的值
- 如果您使用其他值填充表单响应中新提交的值行,则无法使用
e.values
检索这些值
- 相反,您可以使用
e.range.getRow()
检索包含最新表单提交的行号,并检索手动添加的值,例如getRange(e.range.getRow(), 21).getValue()
- 请注意,如果在提交表单数据后在后面添加 U 和 W 列中的值,它们可能无法在表单提交时直接可用,但会稍有延迟
- 在这种情况下,它们可能是
undefined
onFormSubmit,最好的方法是等待,例如通过在检索这些值 之前合并 Utilities.sleep()
样本:
function myFunction(e) {
Utilities.sleep(1000);
var range = e.range;
var row = range.getRow();
var sheet = range.getSheet();
var userName = e.values[2]; //this info comes from form and works
var teamName = e.values[1]; //this info comes from form and works
var recipient = e.values[4]; //this info comes from form and works
var refNumber = sheet.getRange(row, 23).getValue();
var NetballWeekend = e.values[6]; //this info comes from form and works
var editURL = sheet.getRange(row, 21).getValue();
var subject = "SunSports Netball Weekend - Your Booking for " + teamName + "." ;
var body = "Hello " + userName + "."
+ "\n" + "We have received your booking form for the " + NetballWeekend + "."
...
}