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