Использование цикла внутри меню UI скрипт для начинающих - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь создать динамическое меню, которое создает имена листов в нем.Я не часто пишу код и нуждаюсь в помощи.в настоящее время код ON_Open создает меню, создает его первый элемент в меню, затем добавляет разделитель и затем зацикливается.он проверяет, сколько листов и начинается с первого.сохраняет имя и создает пункт меню с этим именем, а затем переходит к следующему листу.получает свое имя и делает следующий пункт меню.я могу заставить цикл работать с интерфейсом меню syntax.im, не беспокоясь об именах.я постараюсь выяснить это дальше, просто хочу, чтобы он сначала создал меню

function onOpen() {

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var numsheets = spreadsheet.getNumSheets();

  SpreadsheetApp.getUi
      .createMenu('SWMS CREATER')
      .addItem('Create New SWMS', 'showPrompt')
      .addSeparator()

 for ( var i = 0; i < numsheets.length;i++ ) {
    var ui = SpreadsheetApp.getUi();
    var subMenu = ui.createMenu('Test Menu');
    subMenu.addItem('Test script'i ,'showPrompt');
    } 

}

1 Ответ

0 голосов
/ 10 февраля 2019

ОП пытается создать динамическое меню, в котором перечислены все листы в электронной таблице.Код OP очень близок к работе - есть небольшое, но значительное количество корректировок.

function onOpen() {

  var ui = SpreadsheetApp.getUi();
  var menu = ui.createMenu('OPSWMS CREATER')
    .addItem('Create New SWMS', 'showPrompt')
    .addSeparator();

  var sheetList = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var subMenu = ui.createMenu('OPTest Menu');

  for (var i = 0; i < sheetList.length; i++) {
    subMenu.addItem(sheetList[i].getName(), 'showPrompt');
  }
  menu.addSubMenu(subMenu).addToUi();
}

Краткое изложение основных отличий:

1) переменная ui выведена из цикла;и затем повторно использовать, где это возможно.
2) переменная menu установлена ​​и также выведена из цикла.Это повторно используется для добавления subMenu в последней строке кода.
3) добавили точку с запятой после .addSeparator() (хотя и необязательного)
4) использованного .getSheets() дляполучить все листы. Это первый ключевой элемент, отсутствующий в коде операции .
5) пропущенная строка var numsheets.Вам это не нужно, потому что вы можете получить тот же счет на sheetList.
6) в цикле, отметив две вещи:

  • sheetList[i] i в квадратных скобках ([i]) возвращает соответствующий элемент из «sheetList»;
  • .getName() возвращает имя листа.В совокупности sheetList[i].getName() дает вам имя листа и позволяет добавить его в качестве элемента меню.

7) menu.addSubMenu(subMenu).addToUi(); Это добавит содержимое цикла в меню. Это второй ключевой элемент, отсутствующий в коде операции .

Кредит :
Ответ Акшина Джалилова на Скрипт Google Apps: динамическое создание меню электронных таблицтовар

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...