Email 谷歌表单。确认电子邮件脚本。使用编辑url

Email 谷歌表单。确认电子邮件脚本。使用编辑url,email,google-apps-script,google-sheets,google-forms,Email,Google Apps Script,Google Sheets,Google Forms,我在Google脚本中有两个工作触发器函数,当表单响应电子表格收到新提交时触发。一个是在电子表格中插入“编辑您的提交”url。另一个查找响应的电子邮件并向他们发送确认 我很难理解的是如何先填充url,然后再发送包含该url的电子邮件 (Google脚本与浏览器中的js调试不同:\) 设置触发器 函数初始化(){ var triggers=ScriptApp.getScriptTriggers(); for(触发器中的var i){ ScriptApp.deleteTrigger(触发器[i]);

我在Google脚本中有两个工作触发器函数,当表单响应电子表格收到新提交时触发。一个是在电子表格中插入“编辑您的提交”url。另一个查找响应的电子邮件并向他们发送确认

我很难理解的是如何先填充url,然后再发送包含该url的电子邮件

(Google脚本与浏览器中的js调试不同:\)

设置触发器

函数初始化(){
var triggers=ScriptApp.getScriptTriggers();
for(触发器中的var i){
ScriptApp.deleteTrigger(触发器[i]);
}
ScriptApp.newTrigger(“发送确认邮件”)
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit()
.create();
assigneditURL();
}
在表单提交时,搜索标题为“客户电子邮件”的列,并向他们发送格式化的电子邮件

函数发送确认邮件(e){
试一试{
变量ss、cc、发送者名称、主题、列;
var消息、值、文本体、发送方;
var-url;
//这是您的电子邮件地址,您将进入CC
cc=Session.getActiveUser().getEmail();
//这将显示为发件人的名称
sendername=“XXXX”;
//可选,但更改以下变量
//为谷歌文档电子邮件设置自定义主题
主题=“填写表格:移动应用-客户问卷”;
//这是自动回复的主体
message=“此处为确认文本。

谢谢!

”; ss=电子表格app.getActiveSheet(); columns=ss.getRange(1,1,1,ss.getLastColumn()).getValues()[0]; //这是提交者的电子邮件地址 sender=e.namedValues[“客户端电子邮件”].toString(); //仅包括非空的表单值 for(列中的变量键){ var key=列[键]; 如果(例如,名称值[键]){ message+=key+::“+e.namedValues[key]+”
”; } } textbody=message.replace(“
”,“\n\n”); GmailApp.sendmail(发件人、主题、正文、, {cc:cc,name:sendername,htmlBody:message}); }捕获(e){ Logger.log(例如toString()); } }
单独的功能。查找表单并将编辑URL应用于第26列

函数assignEditUrls(){
var form=格式openById('10BVYipGhDa_AthabHE-xxxxxx-hg');
//在此处输入表单ID
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form Responses');
//根据需要更改图纸名称
var data=sheet.getDataRange().getValues();
var urlCol=26;//应该填充URL的列号;A=1,B=2等
var responses=form.getResponses();
var时间戳=[]、URL=[]、结果URL=[];
对于(var i=0;i
当触发函数依赖于同一事件时,程序员无法直接控制触发函数的调用顺序

但在您的情况下,有两种选择

  • 对事件只使用一个触发器函数,并让它按照您需要的顺序调用当前函数。(或者,将
    assignEditUrls()
    设置为唯一的触发器函数,并让它在完成任务后调用
    SendConfirmationMail()

  • SendConfirmationMail()
    检查编辑URL的可用性,如果URL还没有准备好,则调用它。(在循环中,直到准备好。)