【问题标题】:Send content of Google Sheet with Google App Script使用 Google App Script 发送 Google Sheet 的内容
【发布时间】:2017-04-26 19:38:13
【问题描述】:

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

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

编辑:它需要在正文中

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 感谢@OblongMedulla 的建议,我应该更清楚 - 它需要在电子邮件的正文中。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 2020-10-20
      相关资源
      最近更新 更多