[英]Email the filter results from Google Apps Scripts
我有以下 function (顺便说一句,我是 Google Apps 脚本的新手)。
function testing(){
let thisSpreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(thirtyMinuteWorksheet).getDataRange().getValues()
let filterData = thisSpreadsheet.filter(function (row,index) {
return row[11] >= 30
});
if(filterData.length > 0){
MailApp.sendEmail({
to: 'email@gmail.com',
subject: 'test',
body: filterData,
noReply: true
});
}
过滤器数据过滤工作表并返回与逻辑匹配的所有行。 我希望能够 email 这些行。 如果我运行它,我会得到 email 。 (加上更多,为简单起见缩短它)。
{10=[Ljava.lang.Object;@7f7f43f6, 179=[Ljava.lang.Object;@d387470,
83=[Ljava.lang.Object;@5daa185f, 54=[Ljava.lang.Object;@39ca2a17, }
我可以看到这是一个 object 但我在他们的 API 上找不到任何东西,这为我指明了如何将这个结果转换为实际值的正确方向
ps
是的,如果我 console.log filterData 我确实得到了正确的对象。 有任何想法吗?
我想出了一个办法,因为这是一个对象数组,我只是将其转换为 HTML function。 如下。
我传入了我的数组结果并添加了一些标题。
function makeTableHTML(myArray,tableHeaders) {
let result = "<table border=1>";
result += "<tr>";
for(var j=0; j<tableHeaders.length; j++){
result += "<td>"+tableHeaders[j]+"</td>";
}
result += "</tr>";
for(var i=0; i<myArray.length; i++) {
result += "<tr>";
for(var j=0; j<myArray[i].length; j++){
result += "<td>"+myArray[i][j]+"</td>";
}
result += "</tr>";
}
result += "</table>";
return result;
}
这给了我一种将返回结果添加到来自 Google Scripts 的发送邮件 function 的方法。
您可以尝试使用join
代替,因为您发送的数据是一个数组。 将其转换为字符串以正确显示数据。
样本数据:
代码:
let filterData = thisSpreadsheet.filter(function (row, index) {
return row[11] >= 30;
});
// Preprocesses filterData before sending mail
filterData.forEach(function (row, index) {
filterData[index] = filterData[index].join(",");
});
filterData = filterData.join("\n");
if (filterData.length > 0) {
MailApp.sendEmail({
to: 'email@gmail.com',
subject: 'test',
body: filterData,
noReply: true
});
}
样品 output:
一个快速的答案是尝试使用JSON.stringify()
包装filterData
,但您无法修改它在邮件中的显示方式。
代码:
body: JSON.stringify(filterData),
样品 output:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.