javascript - 尝试通过 Google 应用脚本将表单条目(从侧边栏)传递到 Google 表格中的特定列/单元格

标签 javascript html forms google-apps-script google-sheets

我浏览了很多有关我的问题的文章,但仍然无法解决我的问题。我正在尝试在侧边栏中创建一个表单,其中的条目将与其他(隐藏)字符串连接以“生成”完整的 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 和所有编码方面的新手。

最佳答案

能够遵循@I'-'I指导并查看此documentation

我将其添加到我的 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);
}

关于javascript - 尝试通过 Google 应用脚本将表单条目(从侧边栏)传递到 Google 表格中的特定列/单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52933559/

相关文章:

html - 部分不保持在同一水平

javascript - 如何将一个类应用于所有按钮?

javascript - 为什么 let 和 var 绑定(bind)在使用 setTimeout 函数时表现不同?

javascript - 如何检查 Map 或 Set 是否为空?

html - 悬停时边框颜色不呈现,而是呈现文本颜色

javascript - 带有 Formik 的 React-Native 选择器

Django 表单 is_valid() 失败

javascript - 内容安全策略阻止 CDN

javascript - 在 html 表单提交后保留来自 javascript 的 innerhtml 值

javascript - 将 href 添加到 txthtml 列