0

ユーザーがサインアップするスポーツを入力する Google フォームがあります。彼らは電子メール、住所、名前などを入力します。次に、Totalのスプレッドシートに列を追加します。これは、回答に基づいて、借りている合計を計算する配列式です。ユーザー送信時のフォームを含むスプレッドシートはうまく機能します。

ただし、スクリプト マネージャーには、onFormSubmit でトリガーされる関数があります (以下を参照)。ユーザーがフォームに入力して送信すると、「確認」メールが送信され、合計が未定義として表示されることを除いて、すべてのフィールドが本来の状態になります。これは arrayformula 列です。なぜ?それらのフィールドを送信することはできませんか? ユーザーにいくら借りているかを知らせるメールが本当に必要です。 ユーザーが送信したばかりの行の合計列を参照するにはどうすればよいですか?

function onFormSubmit(e) {
 var timestamp = e.values[0];
  var toAddress = e.values[1];
  var LastName = e.values[2];
  var Street = e.values[3];
  var City = e.values[4];
  var Zip = e.values[5];
  var Phone = e.values[6];
  var Student1 = e.values[7];
  var GradeS1 = e.values[8];
  var BdayS1 = e.values[9];
  var GenderS1 = e.values[10];
  var SportS1 = e.values[11];
  var Student2 = e.values[12];
  var GradeS2 = e.values[13];
  var BdayS2 = e.values[14];
  var GenderS2 = e.values[15];
  var SportS2 = e.values[16];
  var Student3 = e.values[17];
  var GradeS3 = e.values[18];
  var BdayS3 = e.values[19];
  var GenderS3 = e.values[20];
  var SportS3 = e.values[21];
  var Student4 = e.values[22];
  var GradeS4 = e.values[23];
  var BdayS4 = e.values[24];
  var GenderS4 = e.values[25];
  var SportS4 = e.values[26]; 
  var Total = e.values[30];

  var subject = "Registration"; 

  var htmlBody = "The Registration details you entered were as follows:" +
      "<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;Date/Time Submitted:  &nbsp;" + timestamp +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Family:  &nbsp;" + LastName +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Address:  &nbsp;" + Street + ", &nbsp;" + City + ", &nbsp;" + Zip + 
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Phone:  &nbsp;" + Phone +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 1:  &nbsp;" + Student1 + ", &nbsp;" + GradeS1 + ", &nbsp;" + BdayS1 + ", &nbsp;" + GenderS1 + ", &nbsp;" + SportS1 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 2:  &nbsp;" + Student2 + ", &nbsp;" + GradeS2 + ", &nbsp;" + BdayS2 + ", &nbsp;" + GenderS2 + ", &nbsp;" + SportS2 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 3:  &nbsp;" + Student3 + ", &nbsp;" + GradeS3 + ", &nbsp;" + BdayS3 + ", &nbsp;" + GenderS3 + ", &nbsp;" + SportS3 +
      "<br/>&nbsp;&nbsp;&nbsp;&nbsp;Student 4:  &nbsp;" + Student4 + ", &nbsp;" + GradeS4 + ", &nbsp;" + BdayS4 + ", &nbsp;" + GenderS4 + ", &nbsp;" + SportS4 +
      "<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;TOTAL DUE:  &nbsp;<b>$" + Total + 
        "</b><br/><br/>Please send your payment, <b>checks payable to Our Company </B> , to:  &nbsp;<font color=\"red\"><b>Person Name</font></b>" +
      "<br/><br/>Your registration will not be activated until payment is received.  Thank you so much!" +
      "<br/><br/>From Our Company";

  var optAdvancedArgs = {name: "Our Company", htmlBody: htmlBody};

  MailApp.sendEmail(toAddress, subject, "Message Body", optAdvancedArgs);

}

ありがとうございます。

4

2 に答える 2

0

あなたの質問で言及したように、TOTAL変数はフォームではなくスプレッドシートで定義されています...したがってe.parameter、フォームにリンクされている/フォームに付随するものに対応していないのは正常です。(e.values[x] は、実際にはこれらが同じ参照番号であっても、スプレッドシートの列ではなく、フォームの質問インデックスを参照します)

この値は、ある場所、つまりスプレッドシートで取得する必要があります。

あなたのスプレッドシートのレイアウトがわからないので、どこにあるかはわかりませんが、簡単にできるはずです。

もう1つの可能なオプションは、スクリプトレベルでスプレッドシートセルで行うのと同じ操作を実行して、スクリプト自体でデータを処理することです...変数値を追加するだけの場合、実装するのはそれほど難しくありません。

于 2013-03-07T07:21:48.170 に答える
0

配列コードを投稿できますか。おそらく、配列の長さは 30(29) 未満だと思います。それまたは配列がどういうわけかデータを正しく挿入していません。また、値を宣言するときに .toString() をスローするのも好きです。

于 2013-03-07T01:06:11.700 に答える