如何解决使用名称创建PDF,而不是在驱动器中创建文件并重命名 问题:解决方案:
当前,我的脚本使用名称export.pdf
保存 PDF ,然后将其重命名为电子表格的一个单元格中的值,这是我网站的 API 最终在创建文件时接受了文件,并且像export.pdf
一样收集了所有文件,而不是我真正需要的名称。
//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 举报,一经查实,本站将立刻删除。