微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用名称创建PDF,而不是在驱动器中创建文件并重命名 问题:解决方案:

如何解决使用名称创建PDF,而不是在驱动器中创建文件并重命名 问题:解决方案:

当前,我的脚本使用名称export.pdf保存 PDF ,然后将其重命名为电子表格的一个单元格中的值,这是我网站的 API 最终在创建文件时接受了文件,并且像export.pdf一样收集了所有文件,而不是我真正需要的名称

是否可以使用正确的名称创建 PDF 而不是重命名

enter image description here

    //Create PDF
    SpreadsheetApp.flush();
    var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/' +
      'IDSPREADSHEETIDSPREADSHEETIDSPREADSHEET' +
        '/export?format=pdf' +
          '&size=0' +
            '&portrait=true' +
              '&fitw=true' + 
                '&top_margin=0' +            
                  '&bottom_margin=0' +         
                    '&left_margin=0' +        
                      '&right_margin=0' +     
                        '&sheetnames=false&printtitle=false' +
                          '&pagenum=false' +
                            '&gridlines=false' +
                              '&fzr=FALSE' +
                                '&gid=' +
                                  'IDPAGEIDPAGEIDPAGEIDPAGE';
    
    var token = ScriptApp.getoAuthToken();
    var docurl = UrlFetchApp.fetch(theurl,{ headers: { 'Authorization': 'Bearer ' +  token } });
    var pdfBlob = docurl.getBlob();
    
    //...get token and Blob (do not create the file);
    
    var fileName = ss.getSheetByName("Gerais").getRange("H2").getValue();
    
    //Access or create the 'squads' folder;
    var folder;
    var folders = DriveApp.getFoldersByName("squads");
    if(folders.hasNext()) {
      folder = folders.next();
    }else {
      folder = DriveApp.createFolder("squads");
    }
    
    //Remove duplicate file with the same name;
    var existing = folder.getFilesByName(fileName);
    if(existing.hasNext()) {
      var duplicate = existing.next();
      if (duplicate.getowner().getEmail() == Session.getActiveUser().getEmail()) {
        var durl = 'https://www.googleapis.com/drive/v3/files/'+duplicate.getId();
        var dres = UrlFetchApp.fetch(durl,{
          method: 'delete',muteHttpExceptions: true,headers: {'Authorization': 'Bearer '+token}
        });
        var status = dres.getResponseCode();
        if (status >=400) {
          
        } else if (status == 204) {
          folder.createFile(pdfBlob).setName(fileName);
        }
      }
    } else {
      folder.createFile(pdfBlob).setName(fileName);

解决方法

问题:

  • 创建文件后设置文件名

    folder.createFile(pdfBlob).setName(fileName);   
    

解决方案:

  • Set the blob name,然后创建文件:

    folder.createFile(pdfBlob.setName(fileName));
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。