このトピックに関する同様の質問を見ましたが、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 フォームからデータを取得するにはどうすればよいですか?