Я работаю над надстройкой 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, но безрезультатно. Все, что я хочу сделать, - это иметь доступ к атрибуту «флажок» в моей форме и редактировать его программно. Любая помощь приветствуется, спасибо