我正在编辑我的团队用于谷歌表单响应表的现有脚本。每次提交订单时,脚本都会使用订单的标题和响应单元格自动创建一个消息体,大致如下:
订单类型:实物国家:美国数字签名:最喜欢的颜色:最喜欢的食物:意大利面
我被要求做的是,让脚本通读一遍表格,不包括任何提交文件中没有回答的问题的标题或回答。就像这样,对于前面的例子:
订单类型:实物国家:美国最喜欢的食物:意大利面
首先,我应该说我在javascript或谷歌应用程序方面几乎没有经验。我试过同时使用len函数和被否定的isblank函数来处理if子句,但都无济于事。这些都会导致未定义的错误。
正如你所看到的,最初的剧本不是由我或过去几年一直在使用它的人创作的。
Original script
function sendFormByEmail(e)
{
Logger.log('value of e is: ' + e);
var email = "xxx@xxx.com";
var s = SpreadsheetApp.getActiveSheet();
var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];
var message = "";
var subject = "Type A Request: ";
// The variable e holds all the form values in an array.
// Loop through the array and append values to the body.
// Insert variables from the spreadsheet into the subject.
// In this case, I wanted the new hire's name and start date in the
// email subject. These are the 3rd and 16th columns in my form.
for(var i in headers)
message += headers[i] + ': '+ e.namedValues[headers[i]].toString() + "nn";
subject += e.namedValues[headers[10]].toString() + " - " +
e.namedValues[headers[12]].toString();
MailApp.sendEmail(email, subject, message, {noReply:true});
// Based off of a script originally posted by Amit Agarwal - www.labnol.org
}
您可以在for循环中包含空白值的检查。
if (e.namedValues[headers[i]].toString() === "") continue;