Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何使用循环的java脚本添加项目菜单';s子菜单,如本例所示;。附加项(“转到本页”、“S”和“我”和“转到其他页”);?_Google Apps Script_Google Sheets_Spreadsheet_Menuitem_Submenu - Fatal编程技术网

Google apps script 如何使用循环的java脚本添加项目菜单';s子菜单,如本例所示;。附加项(“转到本页”、“S”和“我”和“转到其他页”);?

Google apps script 如何使用循环的java脚本添加项目菜单';s子菜单,如本例所示;。附加项(“转到本页”、“S”和“我”和“转到其他页”);?,google-apps-script,google-sheets,spreadsheet,menuitem,submenu,Google Apps Script,Google Sheets,Spreadsheet,Menuitem,Submenu,嗨,大家。。我有一个关于在GAS(谷歌应用程序脚本)中创建菜单的问题,要在没有三个脚本的情况下实现到谷歌电子表格,这已经花了很长时间,也消耗了我的精力,而且我已经创建了这么多行这样的脚本。这是剧本。代码如下: 这是我的主要问题因为这些脚本的结构,所以我必须创建这些行。见下文: 问题是如何在没有第三个子脚本的情况下创建它们???我想,我希望有另一种方法来创建它们当然是的,我相信有,但那只是一种方法,因为我不知道这种方法如何。请找个人帮我解决这个案子。任何成就都将受到赞赏。提前感谢占用了您的时间

嗨,大家。。我有一个关于在GAS(谷歌应用程序脚本)中创建菜单的问题,要在没有三个脚本的情况下实现到谷歌电子表格,这已经花了很长时间,也消耗了我的精力,而且我已经创建了这么多行这样的脚本。这是剧本。代码如下:


这是我的主要问题因为这些脚本的结构,所以我必须创建这些行。见下文:


问题是如何在没有第三个子脚本的情况下创建它们???我想,我希望有另一种方法来创建它们当然是的,我相信有,但那只是一种方法,因为我不知道这种方法如何。请找个人帮我解决这个案子。任何成就都将受到赞赏。提前感谢占用了您的时间,我为我糟糕的英语道歉。

事实上,您可以动态生成这些函数。我们的想法是在“全局”范围内的任何函数的外部保持一个for循环,它将生成所有这些函数。之后,可以通过菜单操作调用它们。您的配置可能如下所示:

//函数“构造函数”
函数createGoToFunction(sheetIndex){
返回函数(){
var sheet=SpreadsheetApp.getActive().getSheets()[sheetIndex];
sheet.activate();
}
}
函数createRenameFunction(sheetIndex){
返回函数(){
//您的重命名逻辑
}
}
函数createMoveFunction(sheetIndex){
返回函数(){
//你的行动逻辑
}
}
//函数定义
这个['ALL_SHEETS']=SpreadsheetApp.getActive().getSheets();

对于(i=0;我可以使用类似“e.parameter”的代码通过GAS脚本将对象定向到菜单吗???您好。您实际执行过任何代码吗?“Menu1”,例如-当你运行代码时会发生什么?与其担心代码的第三部分,我认为掌握Javascript和Google脚本的基础知识会更有成效。@Tedinoz是的。。但我是业余程序员,你能告诉我怎么做吗?你能写几行给我举个例子吗?不管怎样n我运行它。它只是运行假设就像显示了“工作表工具只是一个示例菜单”的菜单,其中有一个子菜单,您的收集工作表的名称,然后在运行“转到…”子菜单之后,将运行“S0GotoS”的另一个脚本这个数字是通过javascript循环选择的,其中的数字与您在子菜单的前三个菜单上选择的表格一致…@carlesgg97哇…这是非常棒的作品。您是如何获得的?哇…无论如何,感谢您的成功成就。我真的需要对您说1000谢谢。这真是太棒了作为一名新手,这让我感到惊讶和兴奋。这是一件值得骄傲的事情。我能学到这一重要的知识。再次感谢Carlesg97…@jamalludin haha这是一个棘手、有趣的问题…很高兴你喜欢我的答案!:)@carlesgg97你的技巧非常简单,而且很有创新性,我找到的最短代码,特别是我在几年前没有找到答案,因为我在这个论坛上寻找这些答案。太神了是的,我当然喜欢。对于我的修正,要学会在近距离内增加功能。
function Menu1() {
var ui = s.getUi(),
    s = SpreadsheetApp,
    ss = s.getAcgtiveSpreadsheet(),
    sss = ss.getSheets(),
    madeMenu = ui.createMenu('Sheet Tools Just For an Example Menus');

 for (var i=0; i < sss.length; i++){
   madeMenu.addSubMenu(ui.createMenu(sss[i].getName())
      .addItem('Go to ...', 'S'+i+'GoToS')
      .addItem('Rename ...', 'S'+i+'RenameS')
      .addItem('Move ...', 'S'+i+'MoveS'))
   madeMenu.addToUi();
  }
}
function GoToS(getSheetNumber) {
  var sheet = sss[getSheetNumber];
  ss.setActiveSheet(sheet);
}
function S0GoToS() {
  GoToS(0)
}

function S1GoToS() {
  GoToS(1)
}

function S2GoToS() {
  GoToS(2)
}

function S3GoToS() {
  GoToS(3)
}

function S4GoToS() {
  GoToS(4)
}

function S5GoToS() {
  GoToS(5)
}