Как отправить входные данные из боковой панели электронной таблицы Google в функцию скрипта листа? - PullRequest
0 голосов
/ 15 февраля 2019

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

// SidePanel.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <button onclick='f1()'>Update the address</button>
<script>
  function f1() {
    google.script.run.getAddress();
  }
</script>
  </body>
</html>

// display sidebar in gs
function showSidebar(){
  var html = HtmlService.createHtmlOutputFromFile('SidePanel').setTitle('Helper').setWidth(100);
  SpreadsheetApp.getUi().showSidebar(html);
}

1 Ответ

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

Вот пример, который поможет вам понять, как отправлять значения из боковой панели на лист Google.

HTML-код:

    <!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <button onclick='f1()'>Update the address</button>
    <!-- Create a input field to except a value form user, in this case there name -->
    Your Name:
    <input type="text" id="name"><br>
    <!-- Create a button to send the value to the spreadsheet -->
    <button onclick='sendName()'>Send Name</button>
<script>

  function f1() {
    google.script.run.getAddress();
  }

  function sendName(){
   //Get the value of the input field 
   var name = document.getElementById("name").value
   //Log the value of input field in the web browser console (usually used for debugging)
   console.log(name)
   //Send the value of the text field as a arugment to the server side function.
   google.script.run.enterName(name)
  }
</script>
  </body>
</html>

В приведенном выше HTML-коде используется поле ввода для получения значений от пользователя.Вы можете получить доступ к значению поля ввода, используя методы DOM .Значение текстового поля хранится в var name в function sendNames().Это передается функции скрипта google в качестве аргумента google.script.run.enterName(name).

Ваш скрипт google (он же код на стороне сервера)

function showSidebar(){
  var html = HtmlService.createHtmlOutputFromFile('SO_sideBar_Example').setTitle('Helper').setWidth(100);
  SpreadsheetApp.getUi().showSidebar(html);
}

// Sets the value of A1 cell to value entered in the input field in the side bar!
function enterName(name){
 var ss = SpreadsheetApp.getActive()
 var sheet = ss.getActiveSheet()
 sheet.getRange("A1").setValue(name) 
}

В приведенном выше коде на стороне сервера function enterName()получает пользовательский ввод в аргумент name, который вводится в ячейку A1.

Хорошей практикой является использование withSuccessHandler () и withFailureHandler (), как описано здесь .Для обработки успеха или неудачи кода на стороне сервера.

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