【问题标题】:Email Google Sheets Content like Copy/Paste with Google Apps Script使用 Google Apps 脚本通过电子邮件发送 Google 表格内容,例如复制/粘贴
【发布时间】:2022-06-15 07:43:11
【问题描述】:

如果您有一个包含一系列包含数据的单元格的 google 表格,则可以轻松地将它们复制/粘贴到电子邮件中,其中保留格式和间距,甚至在适当时自动创建表格。有没有办法使用 Apps 脚本来模仿这种行为?我的直觉说不,但我想检查一下。

或者,我可以使用 Apps 脚本将 Google 表格的标签导出为 PDF 或 JPEG 吗?

谢谢!

【问题讨论】:

  • 简短回答:不是和是。如果您需要进一步的帮助,请按照How to Ask 中的建议添加您的搜索工作的简要说明。

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


【解决方案1】:

您可以通过这种方式发送电子邮件,您将拥有类似电子表格的内容

function endEmail() {
  MailApp.sendEmail({to: 'who@gmail.com',
  subject: 'my subject', 
  htmlBody: testTableHTML()})
};
function testTableHTML(){
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('mySheet')
  var plage = sh.getRange('A1:H33'); // adapt as necessary
  return (tableHTML(plage))
}
function tableHTML(plage){
  var data=plage.getDisplayValues()
  var taille=plage.getFontSizes()
  var fond=plage.getBackgrounds()
  var couleur=plage.getFontColors()
  var police=plage.getFontFamilies()
  var htmltable = '<table style="border:1px solid black;">';
  for (row = 0; row<data.length; row++){
    htmltable += '<tr>';
    for (col = 0 ;col<data[row].length; col++){
      if (data[row][col] === "" || 0) {htmltable += '<td>' + '&nbsp;' + '</td>';} 
      else
        htmltable += '<td style="font-family:' + police[row][col] + '; background-color:' + fond[row][col] + '; color:' + couleur[row][col] + '; font-size:' + taille[row][col] + 'px;">' + data[row][col] + '</td>';
      }
      htmltable += '</tr>';
    }
  htmltable += '</table>';
  return htmltable
}

【讨论】:

  • 我想知道有没有办法在工作表中获取边框细节以在电子邮件中模仿它?
  • 我已经用&lt;table style="border:1px solid black;"&gt;改变了我的答案
  • 我的意思是如果工作表每个单元格的边框像素不同。但我想这是不可能的。仍然是一个非常好的和详细的答案。赞成
【解决方案2】:

您可以将上述选项与以 PDF 附件形式发送表格相结合,以模拟工作表中表格的样式。

   function onOpen(e) {
   var menu = SpreadsheetApp.getUi().createMenu("⚙️ Enviar Email");
   menu.addItem("Email PDF", "sendPDFHTMLEmail");
   menu.addToUi();}

function sendPDFHTMLEmail() {
  DocumentApp.getActiveDocument();
  DriveApp.getFiles();
  const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1FBPBJ_VIBBYc-HLA-6A3TJwABO9ndl3T6mPRYXlFWHU/edit");
  const value = ss.getSheetByName("COVID / ALERTA").getRange("A1").getValue();
//  const email = value.toString();
//  const subject = ss.getSheetByName("COVID / ALERTA").getRange("A1:G60").getValue();
const subjectDate = ss.getSheetByName("COVID / ALERTA").getSheetName() +" " + ss.getSheetByName("COVID / ALERTA").getRange("H1").getValue().toISOString().slice(0, 10);
  const body = "Estimados, enviamos informe de trazabilidad de hoy.<p>"+"Atte.<br>"+"Enfermería de Junior School";
  const url = 'YOUR SHEET/export?';

  const exportOptions =
    'exportFormat=pdf&format=pdf' + 
    '&size=letter' + 
    '&landscape=true' + 
    '&fitw=true' + 
    '&sheetnames=true&printtitle=false' + 
    '&pagenumbers=false&gridlines=true' + 
    '&fzr=true' + 
    '&if=false' +
    '&ic=true' +
    '&r1=51' +
    '&c1=0' +
    '&r2=102' +
    '&c2=20'+
    '&gid=1218787468&range=1:60';
  
  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};

  var response = UrlFetchApp.fetch(url+exportOptions, params).getBlob();

  MailApp.sendEmail({to: 'AN EMAIL',
  subject: subjectDate,
  htmlBody: testTableHTML(), body, attachments:
    [{
      fileName: subjectDate + ".pdf",
      content: response.getBytes(),
      mimeType: "application/pdf"
      }] })
};

function testTableHTML(){
  var sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('COVID / ALERTA')
  var plage = sh.getRange('A1:G60'); // adapt as necessary
  return (tableHTML(plage))
}
function tableHTML(plage){
  var data=plage.getDisplayValues()
  var taille=plage.getFontSizes()
  var fond=plage.getBackgrounds()
  var couleur=plage.getFontColors()
  var police=plage.getFontFamilies()
  var body = "Estimados, enviamos informe de trazabilidad de hoy.<p>"+"Atte.<br>"+"Enfermería de Junior School<p><p>";
  var htmltable = body + '<table style="border:1px solid black;">';
  for (row = 0; row<data.length; row++){
    htmltable += '<tr>';
    for (col = 0 ;col<data[row].length; col++){
      if (data[row][col] === "" || 0) {htmltable += '<td>' + '&nbsp;' + '</td>';} 
      else
        htmltable += '<td style="font-family:' + police[row][col] + '; background-color:' + fond[row][col] + '; color:' + couleur[row][col] + '; font-size:' + taille[row][col] + 'px;">' + data[row][col] + '</td>';
      }
      htmltable += '</tr>';
    }
  htmltable += '</table>';
  return htmltable}

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    相关资源
    最近更新 更多