Кнопка создания скрипта Google Apps, которая запускает функцию с несколькими параметрами

#javascript #html #google-apps-script

#javascript #HTML #google-apps-script

Вопрос:

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

Мой HTML код выглядит следующим образом:

 <!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <style type="text/css">
    button { 
      font-size: 13px;
      margin:5px;
    }
    </style>
  </head>
  <body>
    <button class="button" style="background-color:#cfe2f3ff;" onclick="google.script.run.setupOffice()">Setup/Reset</button>
</body>
</html>
 

Функция, которую я пытаюсь запустить при нажатии кнопки, очень длинная. Но это выглядит так, чтобы дать вам представление:

 function setupOffice(officeSelection, ss, officeID){}
 

officeSelection Параметр основан на том, что пользователь выбрал из выпадающего списка в определенной ячейке (A2). ss просто вызывает определенный лист по имени. officeID вызывает массив, с которым сравнивается officeSelection .

Есть ли способ заставить кнопку работать так же, как когда я рисую изображение и назначаю ему скрипт?

Спасибо!

Комментарии:

1. @TheMaster я не уверен, как я это сделаю?

2. Как бы вы назначили скрипт для изображения и при этом ожидали передачи параметров?

3. Вызовите, скажем main , другую функцию, которая будет вызываться setupOffice() с ее параметрами.

4. Или используйте подсказку пользовательского интерфейса в функции

Ответ №1:

 function runWithButtonAndSupplyParamsAtRunTime() {
  const ss=SpreadsheetApp.getActive();
  const resp=SpreadsheetApp.getUi().prompt("Enter Parameters","Enter param1/param2/param3/param4....",SpreadsheetApp.getUi().ButtonSet.OK_CANCEL);
  if(resp.getSelectedButton()==SpreadsheetApp.getUi().Button.OK) {
    let param=resp.getResponseText().split('/');
    SpreadsheetApp.getUi().alert(param.join('n'));//just to view params
    //now your params are in param[0],param[1]....
    //do the rest of your work here
  }else{
    SpreadsheetApp.getUi().alert('No parameters provide');
  }
}