我创建了一个Google表单,要求用户从列表中选择名称和ID。名称和ID的格式可以是两种:
Smith, John (12345)
Doe, John (JDO)
我希望每次提交表单时都会自动将电子邮件发送到地址,主题行只是括号中包含的ID。我有自动发送的电子邮件,可以从我想要的单元格中获取整个字符串,但我需要一个函数,可以将字符串解析为括号中包含的内容。到目前为止,这是我在本论坛上找到的帮助拼凑而成的(感谢amit@labnol.org)。
function Initialize() {
var triggers = ScriptApp.getScriptTriggers();
for(var i in triggers) {
ScriptApp.deleteTrigger(triggers[i]);
}
ScriptApp.newTrigger("SendGoogleForm")
.forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
.onFormSubmit()
.create();
}
function SendGoogleForm(e)
{
try
{
// You may also replace this with another email address
var email = "xxxxxx@gmail.com";
// Optional but change the following variable
// to have a custom subject for Google Docs emails
var s = SpreadsheetApp.getActiveSheet();
var subject = s.getRange(s.getLastRow(),21).getValue();
var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
var message = "";
// Credit to Henrique Abreu for fixing the sort order
for(var i in headers) {
message += headers[i] + ' :: '+ e.namedValues[headers[i]].toString() + "\n\n";
}
message += "Sheet URL :: " + SpreadsheetApp.getActiveSpreadsheet().getUrl() + "\n";
// This is the MailApp service of Google Apps Script
// that sends the email. You can also use GmailApp here.
MailApp.sendEmail(email, subject, message);
} catch (e) {
Logger.log(e.toString());
}
}
我只是javascript的新手,所以任何帮助都会非常感激。
干杯。
答案 0 :(得分:0)
由于ID包含在两种格式的括号内,因此您可以使用javascript字符串操作来有效隔离它:
...
var subject = s.getRange(s.getLastRow(),21).getValue()
.split('(')[1].split(')')[0];
...
说明:split()
method将字符串分解为子字符串数组。我们首先分开开括号,我们期望它会给我们两个子串。我们选择第二个(或第1个,因为数组索引从0开始)子字符串,它包含ID,并进一步将其拆分为闭括号。从该数组中,第一个(第0个)元素是我们的ID。