0

スクリプトでスプレッドシートの onFormSubmit をトリガーする方法はありますか? つまり、Google フォームを使用して onFormSubmit をトリガーする代わりに? 以下の sendHttpPost コードをスプレッドシート Web アプリに投稿しようとしました。

function sendHttpPostSelf() {
var payload = {
      "name" : "name",
      "comment" : "comment",
    };
  var options = {
      "method" : "post",
      "payload" : payload
    };
var url="https://script.google.com/macros/s/AKfycbzlVoiDQMbLe4yliErDoNub6A0m3tijSfPAUMEBENgIikQnLQ_H/exec";
var resp=UrlFetchApp.fetch(url,options);
Logger.log(resp.getContentText());
} 

このコードは、スプレッドシート Web アプリで doPost() を正しくトリガーします。ただし、コードはスプレッドシートの onFormSubmit をトリガーしません。または、スプレッドシートに挿入するときにonInsertトリガーをスクリプト化する方法はありますか?

4

3 に答える 3

0

私が間違っているかどうか教えてください。私が理解したことのうち、Googleフォームを通過するのではなく、自分で作成したフォームを使用して値を送信し、doPostアクションで送信したいと考えています。 1/ appenrow() を使用してスプレッドシートに doPost からのデータを挿入します。
2 / doPost() 内で onFormSubmit で通常呼び出される関数を呼び出します (onFormSubmit に転送する必要があります)。適切な引数を機能させます (実際の formSubmit で呼び出されたかのように)

サンプル関数は次のとおりです。

function onformSubmit(e){ 
  var answers = e.values;
  if (typeof(answers) == "undefined") answers = e;
  MailApp.sendEmail("youremailadress", "form first answer", answers[1]);

}
function doPost(e){
  MailApp.sendEmail("youremailadress","reponse doPost",e.parameter.name);
  SpreadsheetApp.openById("spreadsheet id").getSheetByName("spreadsheet name").appendRow([new Date(),e.parameter.name,e.parameter.comment]);
  var toe = [new Date(),e.parameter.name,e.parameter.comment];
  onformSubmit(toe);
  return(ContentService.createTextOutput().setContent("okey"));
}
function submitIt(){
  var payload = {
      "name" : "name",
      "comment" : "comment",
    };
  var options = {
      "method" : "post",
      "payload" : payload
    };
var url="https://script.google.com/macros/s/yourscripturl/exec";
var resp=UrlFetchApp.fetch(url,options);
}

submitIt() を起動すると、フォームが送信されたときと同じようにスプレッドシートに行を書き込む doPost が呼び出され、onformsubmit 関数が呼び出されます (通常、フォームが送信されたときに呼び出されます)。

于 2013-03-20T17:27:00.093 に答える
0

編集時にトリガーされないもののリストと、それらの問題追跡 ID は、以前の回答で提供されていました。新しい行の検出を示すコード例があります...ただし、それをトリガーするには他の種類の編集を行う必要があることに注意してください!

したがって、悪いニュースです。Arun の回答にもかかわらず、行を挿入してもスクリプトで値を記述しても onEdit はトリガーされません。

于 2013-03-20T00:54:50.213 に答える
0

onFormSubmit トリガーは、Google フォームが送信されたときにのみ発生します。それをトリガーする Apps Script コードを取得するのは非常に難しい/サポートされていません。

新しい行を検出する機能だけが必要な場合は、onEdit トリガーを使用して範囲をチェックし、挿入されたものを確認できます。

https://developers.google.com/apps-script/understanding_events

于 2013-03-19T20:37:53.803 に答える