[英]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>' + ' ' + '</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');
}
您可以將上述選項與作為 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>' + ' ' + '</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.