使用Google App Script发送Google Sheet的内容

时间:2017-04-26 19:38:13

标签: google-apps-script google-sheets gmail

我正在尝试创建一个脚本,每周都会通过电子邮件向我发送Google工作表的内容。

有人能指出我正确的方向吗?

编辑:它需要在身体

3 个答案:

答案 0 :(得分:0)

这会将表单作为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);
}




答案 1 :(得分:0)

到目前为止,这是我的解决方案,但它不干净&远非理想:



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);
}




答案 2 :(得分:0)

您可以查看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()。需要注意的是,此方法有四个版本