Google 工作表 通过电子邮件将特定工作表作为 CSV 文件发送
Google Sheets Email specific sheets as CSV
我一直在论坛上四处寻找,但一直找不到解决方案,我正在尝试将多张工作表作为单独的附件发送到同一封电子邮件中,到目前为止,我可以通过电子邮件发送附件只有一个,但似乎无法找到 select 多张添加到附件的方法,在我的代码下方:
function sendTimelist() {
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Configure").getRange("B2");
var email = emailRange.getValues();
var emailAddress = email;
var mailReplyTo = email;
var subject = 'Weekly Email Alerts';
var message = '\bHi team\b,\n\nPlease find the Data of Sheets.\n\nThank you,\.';
var attachmentName = 'Test.csv';
var fileId = "Ac12154d4s5dsd87s8d";
var timelist = UrlFetchApp.fetch(
"https://docs.google.com/feeds/download/spreadsheets/Export?key=" + fileId + "&exportFormat=csv",
{
"headers": {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
"muteHttpExceptions": true
}
).getBlob().setName(attachmentName);
var optAdvancedArgs = {replyTo: mailReplyTo, name: attachmentName, attachments: [timelist] };
GmailApp.sendEmail(emailAddress, subject, message, optAdvancedArgs);
}
有什么想法吗?谢谢
我有一个非常复杂的脚本来执行此操作,但我已经提取并更改了它,以便它适合您的目的和导出类型等...
function sendPdf() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');//<<--------<<-----DEFINE YOUR FIRST SHEET
var sh2 = ss.getSheetByName('Sheet2');//<<--------<<-----DEFINE YOUR SECOND SHEET
var exportName1 = "Test1";//<<--------<<------<<--------DEFINE THE 1st ATTACHMENT NAME
var exportName2 = "Test2";//<<--------<<------<<--------DEFINE THE 2nd ATTACHMENT NAME
var url1 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
+ '&size=A4'
+ '&portrait=false'
+ '&fitw=true'
+ '&top_margin=0.60'
+ '&bottom_margin=0.60'
+ '&left_margin=0.60'
+ '&right_margin=0.60'
+ '&sheetnames=false&printtitle=false'
+ '&pagenumbers=false&gridlines=false'
+ '&fzr=false'
+ '&gid='+sh1.getSheetId();
var url2 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
+ '&size=A4'
+ '&portrait=false'
+ '&fitw=true'
+ '&top_margin=0.60'
+ '&bottom_margin=0.60'
+ '&left_margin=0.60'
+ '&right_margin=0.60'
+ '&sheetnames=false&printtitle=false'
+ '&pagenumbers=false&gridlines=false'
+ '&fzr=false'
+ '&gid='+sh2.getSheetId();
var response1 = UrlFetchApp.fetch(url1, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}
});
var response2 = UrlFetchApp.fetch(url2, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}
});
var blob1 = response1.getBlob().setName(exportName1);
var blob2 = response2.getBlob().setName(exportName2);
MailApp.sendEmail({to: 'email@email.com', //<<--------<<------EMAIL TO SEND TO
subject: 'Send Multiple Sheets',//<<-------EMAIL SUBJECT
message: 'See attached',//<<--------<<-----EMAIL BODY - I WOULD GENERALLY USE htmlBody BUT IN THIS CASE EDITED TO NOT GET TOO CONFUSING
name: 'Send Sheets',//<<--------<<------<<-NAME THAT APPEARS WHEN EMAIL SENT
replyTo: 'no-reply@email.com',//<<--------<WHERE A REPLY TO THE EMAIL WILL GO
attachments: [{
fileName: exportName1,
content: blob1.getBytes(),
mimeType: "text/csv"},{
fileName: exportName2,
content: blob2.getBytes(),
mimeType: "text/csv"}],
});
}
可能可以使用 for()
等将其编辑得更整洁,但这使得开始时很简单。要添加更多工作表,几乎就是复制并粘贴代码,然后更改相关的 var
等
我一直在论坛上四处寻找,但一直找不到解决方案,我正在尝试将多张工作表作为单独的附件发送到同一封电子邮件中,到目前为止,我可以通过电子邮件发送附件只有一个,但似乎无法找到 select 多张添加到附件的方法,在我的代码下方:
function sendTimelist() {
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Configure").getRange("B2");
var email = emailRange.getValues();
var emailAddress = email;
var mailReplyTo = email;
var subject = 'Weekly Email Alerts';
var message = '\bHi team\b,\n\nPlease find the Data of Sheets.\n\nThank you,\.';
var attachmentName = 'Test.csv';
var fileId = "Ac12154d4s5dsd87s8d";
var timelist = UrlFetchApp.fetch(
"https://docs.google.com/feeds/download/spreadsheets/Export?key=" + fileId + "&exportFormat=csv",
{
"headers": {Authorization: "Bearer " + ScriptApp.getOAuthToken()},
"muteHttpExceptions": true
}
).getBlob().setName(attachmentName);
var optAdvancedArgs = {replyTo: mailReplyTo, name: attachmentName, attachments: [timelist] };
GmailApp.sendEmail(emailAddress, subject, message, optAdvancedArgs);
}
有什么想法吗?谢谢
我有一个非常复杂的脚本来执行此操作,但我已经提取并更改了它,以便它适合您的目的和导出类型等...
function sendPdf() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');//<<--------<<-----DEFINE YOUR FIRST SHEET
var sh2 = ss.getSheetByName('Sheet2');//<<--------<<-----DEFINE YOUR SECOND SHEET
var exportName1 = "Test1";//<<--------<<------<<--------DEFINE THE 1st ATTACHMENT NAME
var exportName2 = "Test2";//<<--------<<------<<--------DEFINE THE 2nd ATTACHMENT NAME
var url1 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
+ '&size=A4'
+ '&portrait=false'
+ '&fitw=true'
+ '&top_margin=0.60'
+ '&bottom_margin=0.60'
+ '&left_margin=0.60'
+ '&right_margin=0.60'
+ '&sheetnames=false&printtitle=false'
+ '&pagenumbers=false&gridlines=false'
+ '&fzr=false'
+ '&gid='+sh1.getSheetId();
var url2 = 'https://docs.google.com/spreadsheets/d/'+ss.getId()+'/export?exportFormat=csv&format=csv'
+ '&size=A4'
+ '&portrait=false'
+ '&fitw=true'
+ '&top_margin=0.60'
+ '&bottom_margin=0.60'
+ '&left_margin=0.60'
+ '&right_margin=0.60'
+ '&sheetnames=false&printtitle=false'
+ '&pagenumbers=false&gridlines=false'
+ '&fzr=false'
+ '&gid='+sh2.getSheetId();
var response1 = UrlFetchApp.fetch(url1, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}
});
var response2 = UrlFetchApp.fetch(url2, {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}
});
var blob1 = response1.getBlob().setName(exportName1);
var blob2 = response2.getBlob().setName(exportName2);
MailApp.sendEmail({to: 'email@email.com', //<<--------<<------EMAIL TO SEND TO
subject: 'Send Multiple Sheets',//<<-------EMAIL SUBJECT
message: 'See attached',//<<--------<<-----EMAIL BODY - I WOULD GENERALLY USE htmlBody BUT IN THIS CASE EDITED TO NOT GET TOO CONFUSING
name: 'Send Sheets',//<<--------<<------<<-NAME THAT APPEARS WHEN EMAIL SENT
replyTo: 'no-reply@email.com',//<<--------<WHERE A REPLY TO THE EMAIL WILL GO
attachments: [{
fileName: exportName1,
content: blob1.getBytes(),
mimeType: "text/csv"},{
fileName: exportName2,
content: blob2.getBytes(),
mimeType: "text/csv"}],
});
}
可能可以使用 for()
等将其编辑得更整洁,但这使得开始时很简单。要添加更多工作表,几乎就是复制并粘贴代码,然后更改相关的 var
等