Google apps script 谷歌表单内容到电子邮件(布局)
我在谷歌的工作表上有一个事件列表。这是一个包含4列数据和几十行数据的工作表。当下周的活动即将到来时,我想自动发送一封电子邮件 我在谷歌页面上有一个标签,用来过滤即将到来的事件。所以我只需要将这些数据复制到电子邮件中 它适用于以下代码:Google apps script 谷歌表单内容到电子邮件(布局),google-apps-script,google-sheets,Google Apps Script,Google Sheets,我在谷歌的工作表上有一个事件列表。这是一个包含4列数据和几十行数据的工作表。当下周的活动即将到来时,我想自动发送一封电子邮件 我在谷歌页面上有一个标签,用来过滤即将到来的事件。所以我只需要将这些数据复制到电子邮件中 它适用于以下代码: var first = ss.getSheetByName("Sheet2"); first.activate(); var sheet = SpreadsheetApp.getActiveSheet(); var data = first.getDataRan
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应用程序脚本有非常基本的了解。接下来该怎么办?如何调整输出
编辑
使用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")
}
函数myFunction(){
var mail='我的邮件地址'
var ss=SpreadsheetApp.openById(“ID代码表”);
//首先是活动工作表
var first=ss.getSheetByName(“Sheet2”);
首先,激活();
var sheet=SpreadsheetApp.getActiveSheet();
var data=first.getDataRange().getValues();
//为电子邮件正文生成内容
var body=“”,
这一排,
列_1_值,
列_2_值,
列_3_值,
列_4_值;
对于(var x=0;x,您可以使用实用程序.formatDate()
方法来格式化日期。您可以使用JavaScript字符串方法来更改大小写。下面是一个示例,它可能不是一个完整的解决方案,但希望它能展示您如何完成所需的工作:
function test(){
var body = "",
allRowsData = "",
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_1_Value = column_1_Value.slice(0,1) + column_1_Value.slice(1).toLowerCase();;//Change to Upper and lower case
column_2_Value = Utilities.formatDate(new Date(column_2_Value), timeZone, "MMM dd");
body = "";//Reset on every loop
body = column_1_Value + " * " +
column_2_Value + " * " +
column_3_Value + " * " +
column_4_Value + " * " +
"\n" + "/n" + "That's all for next week";
allRowsData = allRowsData + body;
};
};
功能测试(){
var body=“”,
allRowsData=“”,
这一排,
列_1_值,
列_2_值,
列_3_值,
列_4_值;
对于(var x=0;x,我希望我能澄清一点。那太好了!这正是我想要的。有一件事我不明白。输出体仍然以“,”开头第二行-但我不知道这个逗号是从哪里来的,也不知道如何去掉它。当数组放入电子邮件时,它可能会自动转换为字符串。数组中的每个元素都用逗号分隔。我会去掉数组,只使用一个文本公式。请参阅更新的答案。如果这有助于解决您的问题,您可以单击绿色复选标记,将答案标记为正确。嗯,我现在只在正文中的工作表中获得las行。我是否犯了错误?您是否在工作表中设置了值?您的代码中没有显示这些值。不确定您的意思,但我已复制了我现在使用的完整代码。感觉我已经接近了!