Eksport 表到 PDF、保存或更新文件名存在时

问题描述 投票:0回答:0

我有一个案例,如何计算客户的用水量和缴费单。 为了解决这个问题,我使用了两个谷歌表单。

  1. GF收集用水数据,做公式计算用水量,计算账单。
  2. GF收集数据,如果客户有上期欠款。

每个表单提交都存储在一个电子表格中(有不同的工作表)并合并到另一个工作表中,以进行计算。 这个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 的帮助。

google-sheets-api
© www.soinside.com 2019 - 2024. All rights reserved.