Javascript 添加多个菜单项

Javascript 添加多个菜单项,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我已经创建了一个菜单文件上传到谷歌驱动器使用以下功能。这里的菜单名是“Attach PO”,如果我想添加另一个名为“Attach GRN”的菜单,该菜单具有相同的逻辑,可以帮助我将文件上载到google drive中,但在单独的文件夹中,我如何添加该菜单。现在,如果我复制该函数并制作一个新的副本,并将菜单名设置为一个新的,它将不起作用,我只能看到一个菜单项 应用脚本: Folder_Id = '1hJ8OGGsSBApnCpUYCqaQTktRbcOd04aK' function onOpe

我已经创建了一个菜单文件上传到谷歌驱动器使用以下功能。这里的菜单名是“Attach PO”,如果我想添加另一个名为“Attach GRN”的菜单,该菜单具有相同的逻辑,可以帮助我将文件上载到google drive中,但在单独的文件夹中,我如何添加该菜单。现在,如果我复制该函数并制作一个新的副本,并将菜单名设置为一个新的,它将不起作用,我只能看到一个菜单项

应用脚本:

Folder_Id = '1hJ8OGGsSBApnCpUYCqaQTktRbcOd04aK'


function onOpen(e){
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var menuEntries = [];
  menuEntries.push({name: "File", functionName: "doGet"});
  ss.addMenu("Attach PO", menuEntries);
}


function upload(obj) {
  var file = DriveApp.getFolderById(Folder_Id).createFile(obj.upload);
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var File_name = file.getName()
  var value = 'hyperlink("' + file.getUrl() + '";"' + File_name + '")'
  
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var selection = activeSheet.getSelection();
  var cell = selection.getCurrentCell()
  cell.setFormula(value)
  
  return {
    fileId: file.getId(),
    mimeType: file.getMimeType(),
    fileName: file.getName(),
  };
}

function doGet(e) {
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var selection = activeSheet.getSelection();
  var cell = selection.getCurrentCell();
  var html = HtmlService.createHtmlOutputFromFile('upload');
  SpreadsheetApp.getUi().showModalDialog(html, 'Upload File');
}
Html代码:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
  </head>
  <body>
  <form> <!-- Modified -->
    <div id="progress" ></div>
    <input type="file" name="upload" id="file">
    <input type="button" value="Submit" class="action" onclick="form_data(this.parentNode)" >
    <input type="button" value="Close" onclick="google.script.host.close()" />
  </form>
  <script>
    function form_data(obj){ // Modified
      google.script.run.withSuccessHandler(closeIt).upload(obj);
    };
    function closeIt(e){ // Modified
      console.log(e);
      google.script.host.close();
    };
  </script>
</body>
</html>
我是这样做的:

SpreadsheetApp.getUi().createMenu('my menu') {
  .addItem('caption','funcname')
  .addSubMenu(SpreadsheetApp.createMenu('sub 1')
  .addItem('caption','funcname'))
  .addToUi();

首先你要记住的是谷歌应用程序脚本使用JavaScript,所以每个函数名都应该是唯一的

第二件事是onOpen是打开时简单触发器的保留函数名


第三件事是,您可以在官方指南上找到一个完整的自定义菜单示例,其中包含多个项目,更具体地说,是在

Make themes子菜单上