【发布时间】:2021-08-24 15:27:00
【问题描述】:
我正在Sheet下开发一个脚本,允许:
- 发送电子邮件并附上表格的 pdf 副本
- 将此工作表以 pdf 格式保存在我的云端硬盘中(使用文件夹 ID 定义)
脚本的第一部分我成功了,没有任何问题。对于第二部分,我也成功地进行了这个备份。但是,此信息中的信息不适合我。事实上,图像没有在文件中传输(我有“cellimage”出现)并且数据与我的工作表中存在的数据不对应。事实上,它们在我的工作表中的逗号后四舍五入到 3 位,而在备份中,没有四舍五入。
我希望拥有与电子邮件附件相同的文件。我努力搜索,但找不到将附件保存在驱动器中的代码。
Here 是文件的链接。
这是允许您发送邮件的功能:
function envoiMail() {
// Déclaration des constantes
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getSheetByName('SYNTHESE');
// Déclaration des variables
var semaine = feuille.getRange('B5').getValue();
var annee = feuille.getRange('B4').getValue();
var auditeurMail = Session.getActiveUser().getEmail().split('@');
var auditeurNomPrenom = auditeurMail[0].split('.');
var auditeurPrenom = majString(auditeurNomPrenom[0]);
var auditeurNom = majString(auditeurNomPrenom[1]);
var signature = auditeurPrenom+' '+auditeurNom;
var sujet = 'test ' + semaine + ' (' + annee +')';
var corpsDuMail = '<p>Bonjour,</p>'
+ '<p> Veuillez trouver ci-joint le test de la semaine ' + semaine + '-'+annee+'.</b></p><br>'
+ '</p>Bonne réception,</p>'
+ signature;
// Pièce jointe
var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", classeur.getId());
var url_ext = 'exportFormat=pdf&format=pdf' + '&size=A4' + '&portrait=true' + '&fitw=true&source=labnol'
+ '&sheetnames=false&printtitle=false' + '&pagenumbers=false&gridlines=false' + '&fzr=false' + '&gid=';
var token = ScriptApp.getOAuthToken();
var pdfMarge = UrlFetchApp.fetch(url + url_ext + feuille.getSheetId(),{headers : {
'Authorization' : 'Bearer ' + token }}).getBlob().setName("Marge_previsionnelle_S"+semaine+"_"+annee+".pdf");
// Fonction permettant d'envoyer le mail
MailApp.sendEmail("email@gmail.com", sujet, corpsDuMail, {
htmlBody : corpsDuMail,
attachments : [pdfMarge]
});
// Pop-up pour informer que l'envoi de mails s'est déroulé correctement
SpreadsheetApp.getUi().alert("Le mail a bien été envoyé aux personnes concernées !");
}
// Fonction permettant de mettre en majuscule la première lettre de la chaîne de caractère
function majString(a){
return (a+'').charAt(0).toUpperCase()+a.substr(1);
}
这是允许我将工作表存档在驱动器中的功能:
function sauvegardeDrive() {
// Déclaration des variables et constantes
const classeur = SpreadsheetApp.getActiveSpreadsheet();
const feuille = classeur.getSheetByName('SYNTHESE');
var sheetName = "SYNTHESE";
var folderID = "1sRkfgLO8C4ABcrzPBonGPJm3emzWD3Ct";
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var folder = DriveApp.getFolderById(folderID);
var semaine = feuille.getRange('B5').getValue();
var annee = feuille.getRange('B4').getValue();
var pdfName = "test"+semaine+"_"+annee+".pdf";
//Copie de l'ensemble du Sheet
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("copieFichier", folder));
//Suppression des onglets inutiles
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){
destSpreadsheet.deleteSheet(sheets[i]);
}
}
var destSheet = destSpreadsheet.getSheets()[0];
var sourceRange = sourceSheet.getRange(1,1,sourceSheet.getMaxRows(),sourceSheet.getMaxColumns());
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
//Sauvegarde en pdf
var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.createFile(theBlob);
//Suppression du Sheet temporaire
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
如果你有什么想法,我很感兴趣。
在此先感谢您,对于文法英语(或其他)的错误,我们深表歉意
【问题讨论】:
标签: pdf google-apps-script attachment drive