1

我查看了有关此主题的类似问题,但仍然无法完全理解如何获取以 HTML 创建的表单输入的数据。

这是我想做的事情:

  • 创建表单(通过 HTML)
  • 在提交表单时,输入的数据用于替换现有 Google 文档模板中的适当占位符键。
  • 通过电子邮件将替换文本的新文档发送给用户。

我按照本教程进行操作,并且能够使其正常工作。问题是 UI(电子表格)不是我想要的。我想要一个 HTML 格式的表单,但无法从中正确提取数据。

这是我使用电子表格创建的示例脚本。

var docTemplate = "1234567890";  // Template ID
var docName     = "FinalDocument";   // Name of the document to be created

// When form gets submitted
function onFormSubmit(e) { 
// Get information from form and set as variables
  var email_address = e.values[1]; 
  var full_name = e.values[2];

// Get document template, copy it and save the new document's id
  var copyId = DocsList.getFileById(docTemplate)
               .makeCopy(docName+' for '+full_name)
               .getId();
// Open the temporary document
  var copyDoc = DocumentApp.openById(copyId);
// Get the document's body section
  var copyBody = copyDoc.getActiveSection();

// Replace place holder keys,in our google doc template
  copyBody.replaceText('keyEmailAddress', email_address);
  copyBody.replaceText('keyFullName', full_name);

// Save and close the temporary document
   copyDoc.saveAndClose();

// Convert temporary document to PDF by using the getAs blob conversion
   var pdf = DocsList.getFileById(copyId).getAs("application/pdf"); 

// Attach PDF and send the email
   var subject = "Final Document";
   var body    = "Here is the form for " + full_name + "";
   MailApp.sendEmail(email_address, subject, body, {htmlBody: body, attachments: pdf}); 

// Delete temporary file
   DocsList.getFileById(copyId).setTrashed(true);
}

这是我刚刚创建的使用 HTML 的新表单。

<html>
  <form id="myForm">
   <input name="fullName" id="_fullName">
   <input name="emailAddress" id="emailAddress">
   <input type="button" id="submit" value="submit" onclick = "sendData()">
  </form>

  <script>
    function sendData() {
     google.script.run.processForm(document.getElementById("myForm"));
    }
  </script>
</html>

有人可以帮助我开始如何从使用电子表格表单过渡到 HTML 表单吗?如何从 HTML 表单中提取数据?

4

1 回答 1

0

您可能想参考我之前在Accessing object is Google App Script中提出的这个问题

因此,对于您的情况,它应该是:

  // Get information from form and set as variables
  var email_address = e.emailAddress; 
  var full_name = e.fullName;

至于你的 HTML 代码

<html>
  <form id="myForm">
   <input name="fullName" id="_fullName">
   <input name="emailAddress" id="emailAddress">
   <input type="button" id="submit" value="submit" onclick = "google.script.run.processForm(this.parentNode)">
  </form>
</html>

请试一试,我没有时间测试代码。非常抱歉。

于 2012-10-03T17:38:41.447 回答