【发布时间】:2016-03-21 15:48:26
【问题描述】:
我在谷歌表中有一个事件列表。这是一张有 4 列数据和几十行数据的工作表。下周有活动时,我想自动发送一封电子邮件。
我在谷歌表格中有一个标签,用于过滤即将发生的事件。所以我只需要将这些数据复制到电子邮件中。
它适用于此代码:
var first = ss.getSheetByName("Sheet2");
first.activate();
var sheet = SpreadsheetApp.getActiveSheet();
var data = first.getDataRange().getValues();
// Generate content
var body = [];
for (var x = 0; x <data.length; x++)
body.push(data[x] + "\n");
body.push("/n" + "That's all for next week");
MailApp.sendEmail(mailaddress, subject, "Upcoming events" +"\n" +"\n" + body)
问题是它看起来很糟糕。在邮件中是这样的:
CAR,Thu Mar 24 2016 08:00:00 GMT+0100 (CET),FY,c
,INBEV,Wed Apr 27 2016 09:00:00 GMT+0200 (CEST),AGM,c
日期信息太长,单元格之间没有间距。我想看到这样的东西:
Car * Mar 24 * FY (c)
INBEV * Apr 27 * AGM (c)
我对 javascript 和 google-apps 脚本有非常基本的了解。有什么方法可以继续?如何调整输出?
编辑 使用 Sandy Good 的建议后效果很好。除了第二行以逗号 (,) 开头。它不是价值的一部分,所以我不能用子字符串把它砍掉。任何人都知道为什么工作表中的第二行(以及第三、第四...)行以逗号开头?
edit2
这是我目前正在使用的。它只从工作表中获取最后一行,因为我从数组切换到文本作为输入。正文并没有真正组装好,内容在最终发送之前一直被替换。
function myFunction() {
var mail = 'my mail address'
var ss = SpreadsheetApp.openById('ID code sheet');
// first is the active sheet
var first = ss.getSheetByName("Sheet2");
first.activate();
var sheet = SpreadsheetApp.getActiveSheet();
var data = first.getDataRange().getValues();
// Generate content for body of email
var body = "",
thisRow,
column_1_Value,
column_2_Value,
column_3_Value,
column_4_Value;
for (var x = 0; x <data.length; x++) {
thisRow = data[x];
column_1_Value = thisRow[0];
column_2_Value = thisRow[1];
column_3_Value = thisRow[2];
column_4_Value = thisRow[3];
column_2_Value = Utilities.formatDate(new Date(column_2_Value), "GMT", "MMMMM dd");
body = **body** + column_1_Value + " * " +
column_2_Value + " * " +
column_3_Value + " (" +
column_4_Value + ")" + "\n"
}
MailApp.sendEmail("mail address to receive mail", "upcoming events", "Upcoming events" +"\n" +"\n" + body + "\n" + "That's all for next week")
}
【问题讨论】:
-
我希望我澄清一下。
标签: google-apps-script google-sheets