Google apps script 使用来自谷歌表单和不同电子表格的信息自动发送电子邮件?
我是谷歌脚本的新手,所以请容忍我。我正在使用谷歌表单和谷歌表单为一个2条件研究注册进行自动化交流。本质上,当参与者提交表单时,我需要发送一封确认电子邮件(触发器是表单提交),注明他们选择的日期,并根据他们的情况发送一个新的唯一ID(我有两个需要使用的预制ID的单独列表)。现在,我有了主表单响应表,然后我使用=query将调查响应根据调查中的多项选择题(“上午”和“晚上”)分为两种情况的表单。我将ID列表填充到相应的工作表中,这样当=查询对响应进行排序时,它们会自动“分配”一个ID作为行填充。我有代码在没有ID的情况下发送电子邮件,只使用电子表格第一页(表单响应表)中的名称和日期,但在从另一张对应表中获取ID以放入电子邮件时遇到问题 以下是我所拥有的:Google apps script 使用来自谷歌表单和不同电子表格的信息自动发送电子邮件?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我是谷歌脚本的新手,所以请容忍我。我正在使用谷歌表单和谷歌表单为一个2条件研究注册进行自动化交流。本质上,当参与者提交表单时,我需要发送一封确认电子邮件(触发器是表单提交),注明他们选择的日期,并根据他们的情况发送一个新的唯一ID(我有两个需要使用的预制ID的单独列表)。现在,我有了主表单响应表,然后我使用=query将调查响应根据调查中的多项选择题(“上午”和“晚上”)分为两种情况的表单。我将ID列表填充到相应的工作表中,这样当=查询对响应进行排序时,它们会自动“分配”一个ID作为行填充。我有
function IntialEmails(e){
var ss = SpreadsheetApp.openById('MyownSpreadsheetID'); //not including real ID for privacy reasons
var type = e.values[4];
if (type == 'Condition A') {
var sheet = ss.getSheets()[1];
ss.setActiveSheet(sheet);
}
if (type == 'Condition B') {
var sheet = ss.getSheets()[2];
ss.setActiveSheet(sheet);
}
var userName = sheet.values[0];
var userEmail = sheet.values[2];
var date = sheet.values[4]; //Using date from corresponding spreadsheet based on survey format
var ID = sheet.values[5]; // Should be from corresponding sheet
var subject = "Study Signup Confirmation and Participant ID";
var templ = HtmlService
.createTemplateFromFile('My html'); //not including real ID for privacy reasons
templ.date = date;
templ.ID = ID;
templ.userName = userName;
var message = templ.evaluate().getContent();
MailApp.sendEmail({
to: userEmail,
subject: subject,
htmlBody: message
});
}
我被卡住了,不断地出错。此代码返回错误“TypeError:无法读取未定义”的属性“0”。如果有人能帮助我,将不胜感激 如果你想从工作表中获取一个值,你可以这样做:(即使我通常不会这样做,我也会遵循你使用的相同方法。我假设你的id或任何数据都在行中。但显然我不知道,因为你没有提供这些信息
function initEmails(e) {
var ss=SpreadsheetApp.getActive();
var shts=ss.getSheets();
var sh=(e.values[4]=="Condition A")?shts[1]:shts[2];
var vs=sh.getRange(1,1,sh.getLastRow(),7).getValues();
for(var i=0;i<vs.length;i++) {
if(vs[i][7]!='USED') {
var userName=vs[i][0];
var userEmail=vs[i][2];
var date=vs[i][4];
var ID=vs[i][5];
var subject = "Study Signup Confirmation and Participant ID";
sh.getRange(i+1,8).setValue('USED');//this provides a way to keep track of which row was used last
}
/*.............I have no idea what your trying to do beyond this point.
}
通常,在评估过程中,模板会使用scriptlet填充所需的数据
您的模板文件是什么样子的?您的id表是什么样子的?哪一行会抛出此错误?
templ.date = date;
templ.ID = ID;
templ.userName = userName;