0
我已經建立了Google表格確認電子郵件觸發器,我發現here。同時,連接的答案表在每個提交的單獨列(在我的情況下爲B列)中計算一個唯一的ID - 通過公式我發現here。谷歌表格確認電子郵件與鏈接表信息
我想實現的是將此唯一ID插入到確認電子郵件中。問題是我不知道如何在Forms腳本中引用適當的Sheets字段。
我已經與e.values[1]
進行過實驗,但我似乎無法使其工作。
這裏是腳本到內部消除任何表引用(完美這一個功能):
function setup() {
/* First, delete all previous triggers */
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
/* Then add a trigger to send an email on form submit */
ScriptApp.newTrigger("sendConfirmationEmail")
.forForm(FormApp.getActiveForm())
.onFormSubmit()
.create();
}
function sendConfirmationEmail(e) {
// e is a Form Event object - see https://developers.google.com/apps-script/guides/triggers/events#google_forms_events
// Edit this to set the subject line for the sent email
var subject = "Data Entry Successful";
// This will show up as the sender's name
var sendername = "John Smith";
// This is the body of the registration confirmation message
var message = "Thank you for submitting the details of your project!<br><br>";
message += "Your form responses were:<br><br>";
// response is a FormResponse - see https://developers.google.com/apps-script/reference/forms/form-response
var response = e.response;
var textbody, sendTo, bcc;
// Get the script owner's email address, in order to bcc: them
bcc = Session.getActiveUser().getEmail();
// Now loop around, getting the item responses and writing them into the email message
var itemResponses = response.getItemResponses();
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
message += itemResponse.getItem().getTitle() +": " + itemResponse.getResponse() + "<br>";
// If this field is the email address, then use it to fill in the sendTo variable
// Check that your form item is named "Please enter your email address" or edit to match
if (itemResponse.getItem().getTitle() == "Please enter your email address") {
sendTo = itemResponse.getResponse();
}
}
message += "<br><a href=\"" + response.getEditResponseUrl() + "\">Please click here</a> if you wish to edit your data or include additional details at a later date.<br>It is essential that you submit any editing through this provided link, since your response data is exclusive only to you. Please do not share your unique edit link with others.<br>If the link doesn't work properly, please copy the following link address manually and then paste it directly into your browser's URL bar:<br>" + response.getEditResponseUrl() + "<br><br><br>Sincerely,<br>John Smith";
message += "<br><br>";
textbody = message.replace("<br>", "\n");
GmailApp.sendEmail(sendTo, subject, textbody,
{bcc: bcc, name: sendername, htmlBody: message});
}
這是我實現我的目標的企圖,但它不工作:
function setup() {
/* First, delete all previous triggers */
var triggers = ScriptApp.getProjectTriggers();
for (var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
/* Then add a trigger to send an email on form submit */
ScriptApp.newTrigger("sendConfirmationEmail")
.forForm(FormApp.getActiveForm())
.onFormSubmit()
.create();
}
function sendConfirmationEmail(e) {
// e is a Form Event object - see https://developers.google.com/apps-script/guides/triggers/events#google_forms_events
// Edit this to set the subject line for the sent email
var subject = "Data Entry Successful";
// This will show up as the sender's name
var sendername = "John Smith";
// This is the body of the registration confirmation message
var message = "Thank you for submitting the details of your project!<br><br>";
message += "Your form responses were:<br><br>";
// response is a FormResponse - see https://developers.google.com/apps-script/reference/forms/form-response
var response = e.response;
var textbody, sendTo, bcc;
// Get the script owner's email address, in order to bcc: them
bcc = Session.getActiveUser().getEmail();
// Get the sheet-generated ID of the submission
var activitID = e.values[1]; //ID number from column B
// Now loop around, getting the item responses and writing them into the email message
var itemResponses = response.getItemResponses();
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
message += itemResponse.getItem().getTitle() +": " + itemResponse.getResponse() + "<br>";
// If this field is the email address, then use it to fill in the sendTo variable
// Check that your form item is named "Please enter your email address" or edit to match
if (itemResponse.getItem().getTitle() == "Please enter your email address") {
sendTo = itemResponse.getResponse();
}
}
message += "The ID of the submitted activity is: " + activitID + "<br><br><a href=\"" + response.getEditResponseUrl() + "\">Please click here</a> if you wish to edit your data or include additional details at a later date.<br>It is essential that you submit any editing through this provided link, since your response data is exclusive only to you. Please do not share your unique edit link with others.<br>If the link doesn't work properly, please copy the following link address manually and then paste it directly into your browser's URL bar:<br>" + response.getEditResponseUrl() + "<br><br><br>Sincerely,<br>John Smith";
message += "<br><br>";
textbody = message.replace("<br>", "\n");
GmailApp.sendEmail(sendTo, subject, textbody,
{bcc: bcc, name: sendername, htmlBody: message});
}
我添加了兩個activitID
零件,一個在代碼中,另一個在消息中發送給收件人。
關於如何使這項工作的任何想法?
謝謝你的回答,utphx。可悲的是,你的回答並沒有使腳本起作用。我改變了它,重命名了回覆表格標題,但沒有發送電子郵件。就像我以前的嘗試一樣,這似乎打破了功能。 – mozzribo
並澄清您的假設:是的,唯一ID與響應位於同一行。 – mozzribo
你可以檢查執行記錄的錯誤嗎?或者嘗試使用Logger.log(activitID)來查看它是否獲取了標識 – utphx