#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');
}
}