javascript - 使用 Google 脚本中的表单条目填充电子邮件主题行
问题描述
我对谷歌脚本完全陌生。我尝试了这里找到的脚本(由 Snipe 编写并由 Govoni 在第一条评论中编辑)。
我想做的是结合这两个脚本,在表单提交时收到一封电子邮件:
- 仅显示已回答的问题(有效)
- 用粗体格式化问题(有效)
- 填充主题行(我无法让它工作)
下面的代码有效。
function newResponse()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formName = ss.getSheetByName('Form Responses 1');
var lastRow = formName.getLastRow();
var lastColumn = formName.getLastColumn();
var email = "sample@myemail.com";
var name = "My Email";
var subject = 'New form response: ';
var body = '';
var cell = '';
for (var i = 1; i <= lastColumn ; i++)
{
var title = formName.getRange(1,i).getDisplayValue();
var cell = formName.getRange(lastRow, i).getDisplayValue();
if (cell != '' && cell != 0)
{
body = body + '<b>'+ title + '</b>: ' + cell + '<br>';
};
};
MailApp.sendEmail({
to: email,
name: name,
subject: subject,
htmlBody: body
});
}
因此,为了尝试将变量条目添加到主题行,我将“function newResponse()”更改为“function newResponse(e)”,并在 MailApp:sendEmail 之前添加了这一行:
// The email subject line should look like this: "New form response: Item (Company, Country)"
// Item, Company and Country are the 2nd, 3rd and 4th columns from my form
subject += e.namedValues[title[1]].toString() + " (" + e.namedValues[title[2]].toString()+ ", "
+ e.namedValues[title[3]].toString()+ ")";
但是当我这样做时,它根本不会发送电子邮件。如果我更改 e.namedValues 而是输入类似 [title[0]] 的内容,它会返回最后一个回答问题的第一个字母。
我不太确定下一步该尝试什么?
解决方案
从您的代码片段中,我想title
变量包含一个字符串,字符串title[0]
的第一个字符也是如此。e.namedValues[title[1]]
如果undefined
没有问题是单字符的话。undefined.toString()
将引发错误,使整个脚本崩溃。
您需要保存工作表中所有列的标题数组。
var titles = [];
for (var i = 1; i <= lastColumn ; i++) {
var title = formName.getRange(1,i).getDisplayValue();
titles.push(title);
var cell = formName.getRange(lastRow, i).getDisplayValue();
...
}
之后,您将能够使用e.namedValues[titles[1]]
. 请注意,我使用titles
, 数组。
推荐阅读
- git - 整理本地 git 分支(最佳实践)
- javascript - 如何将日期从英文格式重新转换为法文格式
- katalon-studio - 在 Katalon 工作室中出现“无法找到对象”错误
- lua - 如何在wireshark lua脚本中从用户数据创建一个tvb范围对象
- post-build-event - 如何以管理员权限运行已部署的 .exe 文件?
- python - 这个“pyarrow.lib.ArrowIOError”的解释是什么?
- angular - CRUD 操作的逻辑
- python - 与其他发行版相比,是否有一个 Linux 发行版对更新的 Python 模块有更好的支持?
- apache-kafka - 创建的表和流未显示为主题
- amazon-web-services - AWS SSH 权限被拒绝(公钥)