google-apps-script - 如何编辑脚本以通过邮件发送表格谷歌表?
问题描述
需要帮助请在谷歌表中编辑脚本我想每天自动发送一封包含表格内容的电子邮件。我可以吗 ?我找到了这段代码
function sendmail1() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getRange(1, 1, 22, 7).getValues();
var email = "xxx@xxx.fr";
var subject = "test";
var body = "body";
data.forEach(function(column){
body += column[0] + " " + column[1] + " " + column[2] + " " + column[3] + " " + column[4] + " " + column[5] + " " + column[6] + "<br>";
});
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail(email, subject, body, {
htmlBody: body
});
}
我设置了触发器这项工作,但我收到的数据没有表格,没有布局,我什么都没有表格布局和数据格式?
(希望我的英语不会太差?;-))
谢谢您的帮助
更新
function sendmail1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var gid = sheet.getSheetId();
var pdfOpts = '&size=A3&fzr=true&portrait=false&fitw=true&gridlines=false&printtitle=true&sheetnames=true&pagenumbers=true&attachment=false&gid='+gid;
var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts
var options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()
}
}
var blobresponse = UrlFetchApp.fetch(url, options);
var blob=blobresponse.getBlob().setName(ss.getName() + " - " + CandidateName+".pdf" );
var emailAddress=Session.getActiveUser().getEmail();
var mess="Voulez-vous envoyer votre rapport à l'adresse : " + emailAddress;
var ans= Browser.msgBox("Courriel", mess, Browser.Buttons.YES_NO);
if (ans===Browser.Buttons.NO){return;}
var mess="Votre rapport a été envoyé à l'adresse : " + emailAddress;
var ss=SpreadsheetApp.getActive();
var sheet=ss.getSheetByName("Recherche");
var CandidateName=ss.getRangeByName("Nom.Candidat").getValue();
var emailSubject="Vérifications pré-emploi complétées" +" - "+ CandidateName;
var emailMessage="Bonjour," + "\n\n" + "J’ai le plaisir de vous informer que les vérifications sont complétées pour le candidat indiqué au tableau de résultats pré-emploi suivant:" + "\n\n" + "Bonne journée !";
var shts=ss.getSheets();
var hdnA=[];
shts.forEach(function(sht){if(sht.getName()!="Recherche") {sht.hideSheet();hdnA.push(sht.getName());}})
MailApp.sendEmail(emailAddress, emailSubject, emailMessage,{attachments:[blob]});
hdnA.forEach(function(name){ss.getSheetByName(name).showSheet();})
Browser.msgBox("Courriel", mess, Browser.Buttons.OK);
}
更新2
/* Envoyer la feuille de calcul par courriel au format PDF */
function emailFeuilleDeCalculVersPDF() {
// Email réceptionant le PDF de cette feuille de calcul
var email = "xxx@xxx";
// Obtenir l'URL de la feuille de calcul actuellement active (lien)
var feuille = SpreadsheetApp.getActiveSpreadsheet();
// Sujet du message
var sujet = "PDF généré depuis la feuille de calcul " + feuille.getName();
// Corps du mail
var corpsDuMessage = "<p>Bonjour,</p>Veuillez trouver en pièce jointe le PDF de votre feuille de calcul.<p>Bonne réception,</p>";
var contenant = DriveApp.getFileById(feuille.getId()).getAs("application/pdf");
contenant.setName(feuille.getName() + ".pdf");
// Si vous n'avez pas dépassé le quota, envoi du mail avec la pièce jointe en PDF.
if (MailApp.getRemainingDailyQuota() > 0)
GmailApp.sendEmail(email, sujet, corpsDuMessage, {
htmlBody: corpsDuMessage,
attachments:[contenant]
});
}
解决方案
您需要将工作表内容转换为 pdf 或构建自定义HTML 表格
要手动构建一个简单的 html 表,您可以执行以下操作:
var body = "body";
body +="<table>";
data.forEach(function(row){
body +="<tr>";
row.forEach(function(column){
body += "<td>" + column + "</td>"
// body += row[0] + " " + row[1] + " " + row[2] + " " + row[3] + " " + row[4] + " " + row[5] + " " + row[6] ;
})
body +="</tr>";
});
body +="</table>";
if (MailApp.getRemainingDailyQuota() > 0){
GmailApp.sendEmail(email, subject, body, {
htmlBody: body
});
}
推荐阅读
- python - django上的两因素身份验证
- python - 如何使用 loc 方法在数据框中设置列?
- vue.js - 如何在 Vue cli 3 中使用交叉点观察者 polyfill?
- c# - 与 ASP.net 核心应用程序一起发布 web 作业 3.xx
- python - 在python中为数据框中的缺失值创建指标
- regex - 匹配除正则表达式之外的所有内容
- linux - Linux 命令 - 根据扩展名和创建日期查找文件
- python - 使用 tkinter 和 python 3.7.2 在辅助屏幕中创建全屏应用程序
- java - 当更新同时运行时,乐观锁定不工作 Spring Data JPA
- dtd - 使用 OpenAPI 定义“DTD”