当有人在Squarespace网站上提交表单时,我想要触发以下非常基本的脚本。这是形式:
/* Send Confirmation Email with Google Forms */
function SendConfirmation() {
var name, body, email, subject;
name = 'Matt';
email = 'myemailaddress@gmail.com';
subject = "Thanks for signing up for DOPPS!";
body = "Thank you " + name;
MailApp.sendEmail(email, subject, body);
}
它只是向我的电子邮件地址发送一封电子邮件,当我从脚本编辑器运行代码时,它可以正常工作。
我设置了以下触发器:
我尝试过“On form submit”和“On Edit”,当从网站提交表单时,这些都不会触发。但是,Squarespace的“myFunction”会触发并向所有者帐户发送电子邮件,因此我知道提交表单会触发某些事件。
请注意,我正在使用填充Google表格的Squarespace表单。
答案 0 :(得分:1)
在工作表界面外调用电子表格时没有事件(调用onEdit和onChange)。您需要的是一个1分钟的时间触发器,用于检查自上次检查后是否添加了新行。您可以使用脚本属性来记住最后处理的行。
答案 1 :(得分:0)
可以使用Google Scripts通过Squarespace Forms和Google表格发送自动确认。 @Zig Mandel表示你必须创建一个每分钟运行一次的时间驱动触发器(模拟自动确认)是正确的。这不是最优雅的方式,但它仍然有效。以下脚本适用于包含3个表单字段(时间戳,名称和电子邮件)的电子表格。我添加了第四列“确认已发送”以跟踪谁已发送电子邮件,谁没有。这是脚本:
/* Send Confirmation Email with Squarespace Forms */
function emailConfirmation(row, sheet) {
var email = sheet.getRange("C" + row).getValue();
var body = “Thank you for signing up!”
var subject = “Welcome to my site!";
Logger.log(row);
// Send Email
MailApp.sendEmail( email, subject, body);
// Register email sent in spreadsheet
sheet.getRange("D" + row).setValue('sent');
};
function findIndex(columnValues) {
var rowNum = [];
for (var i = 0; i < columnValues.length; i++) {
if (columnValues[i] == '') {
rowNum.push(i + 2);
}
}
return rowNum;
};
function searchForNew(sheet) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0]; // gets the first and only sheet
var column = sheet.getLastColumn();
var lastRow = sheet.getLastRow();
var columnValues = sheet.getRange(2, column, sheet.getLastRow() - 1).getValues(); // returns all values in "Confirmation Sent" column
var searchResult = findIndex(columnValues); // returns rows that do not have a value of 'sent'
if(searchResult.length > 0) {
for (var i = 0; i <= searchResult.length - 1; i++) {
var row = searchResult[i];
emailConfirmation(row, sheet);
}
} else {
Logger.log('No new registrants.');
}
}
触发器应在此方案中运行searchForNew()
功能。如果有人有兴趣了解更多相关信息,我已经详细介绍了blog post这个解决方法。我花了3天时间试图找出解决方案,所以我认为其他人可能会从中受益。