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

以前にAccessingobjectis GoogleAppScriptで尋ねたこの質問を参照することをお勧めします

したがって、あなたの場合は次のようになります。

  // 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 に答える