我有这个 onopen 和一个脚本(从别处复制过来,稍作修改)
如果我尝试从新菜单运行它,我会得到: 找不到脚本函数:savePDFs( optSSId, optSheetId ) 但是它只在第一次工作。
如果我在脚本编辑器中使用运行命令运行它,它将运行但不执行任何操作。
有什么想法吗?
非常感谢
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Actions')
.addItem('Make PDFs', 'savePDFs( optSSId, optSheetId )')
.addToUi();
};
function savePDFs( optSSId, optSheetId ) {
var ss = (optSSId) ? SpreadsheetApp.openById(optSSId) : SpreadsheetApp.getActiveSpreadsheet();
var url = ss.getUrl().replace(/edit$/,'');
var parents = DriveApp.getFileById(ss.getId()).getParents();
var folders = DriveApp.getFoldersByName('1 Service Sheet PDFs'); // Modified
var folder = folders.hasNext() ? folders.next() : parents.next(); // Modified
var sheets = ss.getSheets();
for (var i=0; i<sheets.length; i++) {
var sheet = sheets[i];
if (optSheetId && optSheetId !== sheet.getSheetId()) continue;
var url_ext = 'export?exportFormat=pdf&format=pdf' //export as pdf
+ '&gid=' + sheet.getSheetId() //the sheet's Id
// following parameters are optional...
+ '&size=letter' // paper size
+ '&portrait=true' // orientation, false for landscape
+ '&fitp=true' // fit to width, false for actual size
+ '&sheetnames=false&printtitle=false&pagenumbers=false' //hide optional headers and footers
+ '&gridlines=false' // hide gridlines
+ '&fzr=false'; // do not repeat row headers (frozen rows) on each page
var options = {headers: {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}}
var response = UrlFetchApp.fetch(url + url_ext, options);
var valor = sheet.getRange('A4').getValue(); // Modified
var blob = response.getBlob().setName(valor + '.pdf');
folder.createFile(blob);
}
}
我认为从您的脚本来看,您当前问题的原因是 .addItem('Make PDF', 'savePDFs( optSSId, optSheetId )') 的 savePDFs( optSSId, optSheetId )。请仅设置函数名称。就像 .addItem('Make PDFs', 'savePDFs') 并且,请修改 function savePDFs( optSSId, optSheetId ) { 到 function savePDFs( optSSId="###", optSheetId="###" ) {。请将“###”替换为您的预期值。在当前阶段,无法设置参数。请注意这一点。
即使未声明 optSSId、optSheetId,您的显示脚本似乎也没有错误。因此,请仅将 .addItem('Make PDFs', 'savePDFs( optSSId, optSheetId )') 修改为 .addItem('Make PDFs', 'savePDFs')