Попытка передать запись формы (из боковой панели) в определенный столбец / ячейку в Google Sheets с помощью скриптов Google App - PullRequest
0 голосов
/ 22 октября 2018

Я просмотрел много статей, касающихся моей проблемы, но я все еще не смог ее устранить.Я пытаюсь создать форму на боковой панели, где записи будут объединены с другими (скрытыми) строками для «генерации» полного URL-адреса, а затем опубликовать этот URL-адрес в столбце активного листа.Мне удалось получить боковую панель и отображение формы, но я не могу заставить что-то еще работать после этого.Когда я нажимаю «Отправить», боковая панель становится пустой, и ничего не происходит.

Вот мой Code.gs:

function onOpen() {
  SpreadsheetApp.getUi()
      .createMenu('Custom Menu')
      .addItem('Show sidebar', 'showSidebar')
      .addToUi();
}

function showSidebar() {
  var html = HtmlService.createHtmlOutputFromFile('Form')
      .setTitle('Link Generator')
      .setWidth(300);
  SpreadsheetApp.getUi()
      .showSidebar(html);
}

function processForm(form) {
  var result = "https://somelink.com/checkout/term?key="+form.partkey+"&metadata=%7B%22morelink%22%3A"+form.cid+"%7D&p_sheet="+form.psheet;
  SpreadsheetApp.getActiveSheet().getActiveCell().setValue(result);
  Logger.log(form)
}

А вот мой Form.html:

<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">

<script>
function handleFormSubmit(formObject) {
    google.script.run.processForm(
      {
        partkey: formObject.getElementById("partkey").value,
        cid: formObject.getElementById("cid").value,
        psheet: formObject.getElementById("psheet").value
      });
}
</script>

<form id="myForm" onsubmit="handleFormSubmit(this)">
  Part Key: <input type="text" name="partkey" id="partkey" required><br/>
  CID: <input type="text" name="cid" id="cid" required><br/>
  PSheet: <input type="text" name="psheet" id="psheet" required><br/>
  <input type="submit" value="Submit" />
</form>
<div id="output"></div>
<p>
<input type="button" value="Close" onclick="google.script.host.close()" />

Обратите внимание, что я новичок в JavaScript и во всем, что я пишу, на самом деле.

1 Ответ

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

Был в состоянии следовать указаниям @I '-' I и просмотрел эту документацию

Я добавил это в свой HTML-файл, и это решило мою проблему:

function preventFormSubmit() {
  var forms = document.querySelectorAll('form');
    for (var i = 0; i < forms.length; i++) {
    forms[i].addEventListener('submit', function(event) {
      event.preventDefault();
      });
    }
}

window.addEventListener('load', preventFormSubmit);

function handleFormSubmit(formObject) {
  google.script.run.processForm(formObject);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...