我有一个案例,如何计算客户的用水量和缴费单。 为了解决这个问题,我使用了两个谷歌表单。
每个表单提交都存储在一个电子表格中(有不同的工作表)并合并到另一个工作表中,以进行计算。
这个GF由不同的官员操作,因为我没有找到一个脚本来打印两个表格都填写后的结果,我编译脚本打印(eksport Sheet)到PDF文件,每一个表格都填写并发送。
要获取最后填写的数据并将其保存为PDF,无论先填写哪个表格都没有关系,我们需要创建一个脚本用于Eksport Sheet To PDF and Save when the File Name didn't exist, or Replace / 存在同名文件时更新文件。基于 OVERWRITE FILE 和 `Create PDF + Update Current File 以及@tanaike 的一些帮助,这里是脚本:
function printSpreadsheetAsPDF() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var fileid = sheet.getId();
var sheetKons = sheet.getSheetByName('DATA KONSUMEN');
var sheetCtkTagih = sheet.getSheetByName('CETAK TAGIHAN');
var fileCtkTagihid = sheetCtkTagih.getSheetId();
var nameFile = sheetCtkTagih.getRange('C4').getValue().toString() +".pdf";
var destinationFolder = DriveApp.getFolderById(sheetKons.getRange('E4').getValue());
var exportOptions ='https://docs.google.com/spreadsheets/d/'+fileid+
'/export?&format=pdf' +
'&size=letter' +
'&portrait=true' +
'&fitw=true' +
'&sheetnames=false&printtitle=false' +
'&pagenumbers=false&gridlines=true' +
'&fzr=true' +
'&gid='+fileCtkTagihid;
var request = {
"method": "GET",
"headers":{"Authorization": "Bearer "+ScriptApp.getOAuthToken()},
"muteHttpExceptions": true
};
var pdf = UrlFetchApp.fetch(exportOptions, request);
pdf = pdf.getBlob().getAs('application/pdf').setName(nameFile);
var deleteexisting = destinationFolder.getFilesByName(nameFile);
if (deleteexisting.hasNext() === false) {
// if no file is found then create it
destinationFolder.createFile(pdf);
} else {
while (deleteexisting.hasNext()) {
var updatedPDF = deleteexisting.next();
Drive.Files.update({mimeType: 'application/pdf'}, updatedPDF.getId(), pdf);
}
}
}
这个脚本运行良好,作为修复说明,感谢@tanaike 的帮助。