HTML-форма - флажки программно - PullRequest
0 голосов
/ 30 июня 2019

Я работаю над надстройкой Google в скрипте Google Apps и пытаюсь создать HTML-форму в качестве боковой панели, код которой приведен здесь:

<body onload="google.script.run.onSettingsOpen()">

<form id="baseSettings" onsubmit="event.preventDefault(); google.script.run.processForm(this); google.script.host.close()">


  <h2>What settings would you like to be on? Please select all that apply.</h2>
  <br>

  <input type="checkbox" name="checks" value="spaces" id="spaces">Double spaces
  <br>

  <input type="checkbox" name="checks" value="punctuation" id="punctuation">Punctuation outside of quotes
  <br>

  <input type="checkbox" name="checks" value="caps" id="caps">Capitilazation at beginning of sentences
  <br>

  <input type="checkbox" name="checks" value="contractions" id="contractions">Contractions
  <br>

  <input type="checkbox" name="checks" value="numbers" id="numbers">Small numbers
  <br>

  <input type="checkbox" name="checks" value="repWords" id="repWords">Repeated words
  <br>
  <br>

  <input type="submit" value="Submit">

</form>

</body>

Я пытаюсь использовать Свойства пользователя, чтобы отслеживать, какие поля должны быть отмечены для этой формы (это панель настроек). Все пользовательские свойства начинаются как true, и могут быть только true или false - без других значений. Я написал следующий код, чтобы установить флажки для отображения того, что ранее было выбрано пользователем для его предпочтений:

function onSettingsOpen()
{

  populateData ();
  initializePreferences();

  document.getElementById(propsList[1]).checked = (allPreferences.getProperty(propsList[1]) === "true");
  document.getElementById(propsList[2]).checked = (allPreferences.getProperty(propsList[2]) === "true");
  document.getElementById(propsList[3]).checked = (allPreferences.getProperty(propsList[3]) === "true");
  document.getElementById(propsList[4]).checked = (allPreferences.getProperty(propsList[4]) === "true");
  document.getElementById(propsList[5]).checked = (allPreferences.getProperty(propsList[5]) === "true");

}

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

var propsList = ["spaces", "punctuation", "caps", "contractions", "numbers", "repWords"];

Вот функция processForm:

function processForm(formObject)
{
  var ui = DocumentApp.getUi();
  var results = JSON.stringify(formObject.checks);
  for (var i = 0; i < 6; i++)
  {
    if (allPreferences.getProperty(allPros[i]) === "false" && results.includes(allProps[i]))
    {
      allPreferences.setProperty(allProps[i], true)
    }
    else if (allPreferences.getProperty(allPros[i]) === "true" && !results.includes(allProps[i]))
    {
      allPreferences.setProperty(allProps[i], false)
    }
  }

}

А вот функция populateData ():

function populateData ()
{
  if (doc == undefined)
  {
    doc = DocumentApp.getActiveDocument();
    bod = doc.getBody();
    docTxt = bod.getText();
    toEdit = bod.editAsText();
    paragraphs = bod.getParagraphs();
    ui = DocumentApp.getUi();
    allPreferences = PropertiesService.getUserProperties();
  }
}

Моя текущая проблема заключается в том, что я получаю сообщение об ошибке: «Ошибка выполнения: ReferenceError:« документ »не определен». Я не уверен, что с этим делать. Я пробовал это в JQuery, но безрезультатно. Все, что я хочу сделать, - это иметь доступ к атрибуту «флажок» в моей форме и редактировать его программно. Любая помощь приветствуется, спасибо

...