Как передать значение по умолчанию в поле <select>на боковой панели Google Sheets с помощью скрипта Apps? - PullRequest
0 голосов
/ 24 октября 2018

Я работаю в системе регистрации на собраниях, используя Google Sheets и Apps Script, и она делает почти все, что мне нужно для этого!Я научился передавать значения из скрипта .gs в боковую панель здесь: Скрипт Google Sheets / Apps - Передавать значения в боковую панель шаблона HTML , что было очень полезно для обеспечения функциональности приложения.

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

С полями ввода текста это довольно просто, и value=<?= fName => (например, для имени) работает для установки значения по умолчанию для поля имени в значении html.fName, которое я передал в боковую панель.,Но поскольку различные опции вложены в теги <select></select>, этот метод не работает.Я не смог найти решение этой проблемы в StackOverflow или в другом месте.

Функция .gs здесь:

function verifySidebar(memberInfo) {
  //VerifyEvent displays sidebar, populated with data from memberInfo
  //memberInfo consists of: [memberID, firstName, lastName, churchName, memberRole]

  var html = HtmlService.createTemplateFromFile('VerifyEvent');

  html.memberID = memberInfo[0];
  html.fName = memberInfo[1];
  html.lName = memberInfo[2];
  html.cName = memberInfo[3];
  html.memRole = memberInfo[4];

  var rendered = html.evaluate().setSandboxMode(HtmlService.SandboxMode.IFRAME)
    .setTitle('Verify Member Info')
    .setWidth(300);

  SpreadsheetApp.getUi().showSidebar(rendered);
}

А вот HTML-код для боковой панели:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h2 id="headeralert">Verify Info and Select Role for Member:</h2>
        <h3 id="memberID"><?= memberID ?></h3>
        <form>
                <p>First Name:<br><input type="text" id="fName" autocomplete="off" value=<?= fName ?>></p>
                <p>Last Name:<br><input type="text" id="lName" autocomplete="offoff" value=<?= lName ?>></p>
                <p>Church:<br><input type="text" id="cName" autocomplete="off" value=<?= cName ?>></p>
                <p>Role:<br>
                <select id="role" class="formField" autofocus value=<?= memRole ?>>
                    <option value="REC">RE Commissioner (VOTER)</option>
                    <option value="TEC">TE Commissioner (VOTER)</option>
                    <option value="REMBVOO">RE Mem by Virtue of Office (VOTER)</option>
                    <option value="CRE">Commissioned RE (VOTER)</option>
                    <option value="REA">RE Attendee (NON-VOTER)</option>
                    <option value="COR">Corresponding Mem (NON-VOTER)</option>
                    <option value="VIS">Visitor (NON-VOTER)</option>
                </select></p>
                <p>
                <button name="submitID" onClick="event.preventDefault(); submitForm(); google.script.host.close();">Register</button>
        </form>
        <script>
        function submitForm() {
          var memberID = document.getElementById("memberID").textContent;
          var firstName = document.getElementById("fName").value;
          var lastName = document.getElementById("lName").value;
          var cName = document.getElementById("cName").value;
          var memRole = document.getElementById("role").value;

          var regInfo = [memberID, firstName, lastName, cName, memRole];
          google.script.run.pushToSheet(regInfo);
        }   
    </script>
    </body>
</html>

1 Ответ

0 голосов
/ 24 октября 2018

Вы можете добавить этот скрипт в конец HTML-файла, который установит значение выбора после рендеринга.

<script>
  document.getElementById('role').value = '<?= memRole; ?>'
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...