簡體   English   中英

Email Google 表格內容,例如使用 Google Apps 腳本復制/粘貼

[英]Email Google Sheets Content like Copy/Paste with Google Apps Script

當您有一個包含一系列包含數據的單元格的 google 表格時,可以輕松地將它們復制/粘貼到 email 中,其中保留格式和間距,甚至在適當時自動創建表格。 有沒有辦法使用 Apps 腳本來模仿這種行為? 我的直覺說不,但我想檢查一下。

或者,我可以使用 Apps 腳本將 Google 表格的選項卡導出到 PDF 或 JPEG 嗎?

謝謝!

您可以通過這種方式發送電子郵件,您將擁有類似電子表格的內容

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
}

對於您的第一個問題,模仿/模仿的時間很長(請查看 Mike 對此的詳細回答)

至於第二個問題,可以。 嘗試使用這種快速簡便的方法將特定工作表導出到 PDF 文件。

腳本:

function exportSheet(sheetName) {    
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  // get list of sheets except the one to export
  var sheets = ss.getSheets().filter(sheet => sheet.getSheetName() != sheetName);
  
  // hide unwanted sheets 
  sheets.forEach(sheet => sheet.hideSheet())

  // will only export the single sheet that is not hidden
  var file = DriveApp.getFolderById(<FOLDER_ID>).createFile(ss.getBlob());
  file.setName('new file name.pdf');

  // show the sheets again after creating the file
  sheets.forEach(sheet => sheet.showSheet())
}

function main() {
  exportSheet('Sheet1');
}

樣本數據:

樣本

Output:

輸出

您可以將上述選項與作為 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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM