【发布时间】:2017-04-26 19:38:13
【问题描述】:
我正在尝试创建一个脚本,该脚本将每周通过电子邮件向我发送 Google 表格的内容。
有人能指出正确的方向吗?
编辑:它需要在正文中
【问题讨论】:
标签: google-apps-script google-sheets gmail
我正在尝试创建一个脚本,该脚本将每周通过电子邮件向我发送 Google 表格的内容。
有人能指出正确的方向吗?
编辑:它需要在正文中
【问题讨论】:
标签: google-apps-script google-sheets gmail
这会将表格作为 xls 发送到您的电子邮件。让它工作,然后设置一个基于时间的触发器。 - 另请注意,这是一个私人工作表,它会在发送电子邮件时短暂设为公开,然后再设置回私人。
function getGoogleSpreadsheetAsExcel(){
try {
var ss = SpreadsheetApp.getActive();
var sheet = DriveApp.getFileById(ss.getId());
// sets sharing to public - to send out email.
sheet.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
var url = "https://www.googleapis.com/drive/v3/files/" + ss.getId() + "/export?mimeType=application/vnd.openxmlformats-officedocument.spreadsheetml.sheet&key=" + "YOUR_KEY_GOES_HERE";
var blob = UrlFetchApp.fetch(url).getBlob();
Logger.log(url);
blob.setName(ss.getName() + ".xlsx");
var now = new Date();
MailApp.sendEmail("YOUR_EMAIL_ADDRESS_GOES_HERE", "Backup " + now , "Backup " + now , {attachments: [blob]});
} catch (f) {
Logger.log(f.toString());
}
// returns the file back to Private access
sheet.setSharing(DriveApp.Access.PRIVATE, DriveApp.Permission.EDIT);
}
【讨论】:
到目前为止,这是我的解决方案,但它并不干净且远非理想:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange(2, 1, sheet.getLastRow(), sheet.getLastColumn());
var data = range.getValues();
var body = '';
for( var row in data ) {
for( var col in data[row] ) {
body += data[row][col] + '\t';
}
}
body += '\n';
}
Logger.log(body);
// MailApp.sendEmail('your@email.com', 'Director Dealings', body);
}
【讨论】:
您可以查看tutorial,了解如何从电子表格发送电子邮件。
function sendEmails() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 2; // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows, 2)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var emailAddress = row[0]; // First column
var message = row[1]; // Second column
var subject = "Sending emails from a Spreadsheet";
MailApp.sendEmail(emailAddress, subject, message);
}
}
您需要使用MailApp.sendEmail()。请注意,此方法有四个版本
【讨论】: