未找到 Google 脚本脚本函数:

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

我有这个 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);
  }
}
google-apps-script google-sheets
1个回答
0
投票

我认为从您的脚本来看,您当前问题的原因是 .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')

© www.soinside.com 2019 - 2024. All rights reserved.