【问题标题】:Is it possible to send multiple sheets from Google Sheets as an email attachment?是否可以将 Google 表格中的多张表格作为电子邮件附件发送?
【发布时间】:2021-11-09 01:28:54
【问题描述】:

我目前正在使用下面的脚本来导出工作簿并将其作为电子邮件附件发送。 是否可以将多张工作表作为一个附件而不是整个工作簿发送?

function emailauto() { 
var date = Utilities.formatDate(new Date(), 'America/Santiago', 'yyyy-MM-dd HH:mm:ss')
var emaila = ('email1@test.com,email2@test.com')
var url = "https://docs.google.com/spreadsheets/d/ + "FileID" + /export?format=xlsx&access_token=" + ScriptApp.getOAuthToken();
var file = UrlFetchApp.fetch(url).getBlob().setName("Filename_" + date + ".xlsx");

GmailApp.sendEmail(emaila, 'Test', 'Test date: ' + date + '.\n\nRegards.', {
    attachments: [file],
    name: 'Tester'
});
}

【问题讨论】:

  • 答案是我,这不是我要找的,但我从中得到了一个想法。第一个链接显示如何将每张工作表附加为单独的文件,除非它被隐藏,第二个链接仅显示发送一张或所有工作表的选项。多亏了第一个链接,我意识到,由于我真的不在乎床单是否真的存在,所以我可以在发送电子邮件之前将它们隐藏起来。

标签: google-apps-script google-sheets


【解决方案1】:

将您希望从电子表格中获取的任何表格作为一个多页 pdf 通过电子邮件发送

将工作表返回到其初始位置。

function emailTheSheetsYouWishAsPDFAttachment() {
  const ss=SpreadsheetApp.openById("ssid");
  const incl=['Sheet2','Sheet1'];
  const pdfFolderId="Folder Id";
  const folder=DriveApp.getFolderById("pdffolderid");
  const sObj={shA:[]};
  const shts=ss.getSheets();
  shts.forEach(function(sh,i){
    sObj.shA.push(sh.getName());
    if(sh.isSheetHidden()) {
      sObj[sh.getName()]='hide';
    }else{
      sObj[sh.getName()]='show';
    }
    if(~incl.indexOf(sh.getName())) {
      sh.showSheet();
    }else{
      sh.hideSheet();
    }
  });
  const file=folder.createFile(ss.getBlob()).setName(ss.getName()).getAs(MimeType.PDF);
  const sh=ss.getSheetByName('Emails');//emails info sheet
  const rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  const hA=sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
  let hObj={};
  hA.forEach(function(e,i){if(e){hObj[e]=i;}})
  const vA=rg.getValues();
  vA.forEach(function(r,i){
    let recipient=r[hObj.recipient];
    let subject=r[hObj.subject];
    let message=r[hObj.message];
    GmailApp.sendEmail(recipient, subject, message, {attachments:[file]})
  })
  sObj.shA.forEach(function(name,i){
    if(sObj[name]=='hide') {
      ss.getSheetByName(name).hideSheet();
    }else{
      ss.getSheetByName(name).showSheet();
    }
  });
}

【讨论】:

  • 回答问题。将工作簿转换为 PDF 是唯一的选择还是也可以用作 xlsx?
  • 老实说,我自己并没有过多地使用这种东西。而且我对 Excel 没有兴趣。如果谷歌表格可以在我的电脑上运行,我什至没有 Excel 副本
猜你喜欢
  • 2020-10-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 2016-11-11
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
相关资源
最近更新 更多