web-dev-qa-db-ja.com

送信時のGoogleフォーム

'onsubmit'トリガーを別のアクションにリンクするために、デフォルトの「フォームの送信」ボタンをどのように参照しますか?ありがとうございました。

たとえば、onsubmitを使用すると、

Logger.log('do something');
12
user2012403

1つはしません。 Form Serviceでは、製品をプログラムで制御することはできません。この一般的なトピックの課題トラッカーには 未解決の課題 があります。スターを付けて「投票」し、更新を受け取ります。

しかし、あなたは失われていません。フォームの応答を受信するスプレッドシートで、インストール可能なトリガーを使用して「フォーム送信時」を起動するスクリプトを追加できます。そこから、送信されたデータに対して、希望どおりのロギングなど、さまざまなことができますが、フォーム自体に対しては何もできません。

Triggers

これらのリファレンスでは、トリガーとイベントについて説明します。

9
Mogsdad

(Mogsdadの回答のように)スクリプトをフォームから応答を受け取るスプレッドシートに追加する代わりに、フォームの[送信]ボタンによってトリガーされるスクリプトを追加しました。

ステップ1:最初にGoogleフォームを作成します

sample Google Form

ステップ2:次に、メニューからTools-> Script editorをクリックします。

Form editor menu bar

ステップ3:関数にonSubmit()のような名前を付けます

Script editor

ステップ4:このようなメールを送信するためのコードを記述し、[実行]ボタンをクリックしてテストします

function onSubmit() {
  MailApp.sendEmail("[email protected],[email protected]",
                    "Subject",
                    "A new application has been submitted.\n\n" +
                    "Here is the link to all Applications:\n" +
                    "https://docs.google.com/spreadsheets/x/1-fdasjhFAKEfdaahfkhsa/",
                    {name:"From Name"});
}

ステップ5:Script Editorのメニューで、Runをクリックするか、ツールバーのPlayボタンを使用してコードをテストします(例:メールを受信して​​いることを確認してください)

Menu bar Run command

ステップ6:Script Editorのメニューで、Resources-> Current project's triggers

Script Editor menu bar

ステップ7:設定を選択イベントFrom formOn form submit

Google App Triggers

ステップ8:次に、フォームエディターのメニューからTools-> Script managerスクリプトが選択されていることを確認します

Script manager

ステップ9:フォームを試してください。フォームの送信ボタンをクリックすると、メールが届きます。

Google Apps live Form

9
JohnB

これは古い答えです。

現在(2014年1月)onSubmitには2つの方法があります。 1つは、おそらくonSubmit()関数を作成することです。これは、(私にとっては機能しません...)現在の送信ユーザーの許可の下でのみ、限られた一連のアクションを許可します。たとえば、彼が送信したメールにアクセスしたり、基になるフォームを次の送信用に変更したりすることはできません。

次に、送信時にトリガーがあり、任意の関数に追加してアタッチし、独自の権限で必要なことをすべて実行できます。上記の回答に追加されたトリガーのスクリーンショットと同じように見えますが、最初の列はフォームスクリプトのメソッドを示し、次の列は「From-Form」、3番目の列は「送信時」です。

通常、メソッドはイベントeを受け取ります。e.valuesは、スプレッドシートに保存された値と同じです。そう

function formSubmitted(e){...

5
pashute

コードをトリガーする2つのアプリケーションがあるようです:(1)フォームと(2)フォームの応答にリンクされたスプレッドシート。

(1)上記のMogsdadとJohnBが指摘したように、イベントは関数に送信されないため、フォームからプログラムで実行できる人は多くありません。たとえば、「フォーム送信時」または「オープン時」に電子メールを送信できますが、イベントオブジェクトがないと、ドキュメントや送信に関する数や行、何も記録することさえできません。

(2)ただし、スプレッドシートがフォームの応答にリンクされている場合、トリガーをスプレッドシートに設定できます。トリガーは、イベント、つまり行、列、およびその他のデータにアクセスできます。

リンクされた応答のGoogleスプレッドシートから:

  • ステップ1:ツール>スクリプトエディター
  • ステップ2:いくつかのコードを記述します。例:

Code.gs:

function onSpreadsheetSubmit(e) {
     var row = e.range.getRow();
     MailApp.sendEmail("[email protected]",
                "Your subject, rows: "+ row,
                "A new application has been submitted on row: "+
                row,
                {name:"From your friendly spreadsheet"});
}
  • ステップ3:実行>関数の実行> onSpreadsheetSubmit(または|>アイコン)
    • テストは実際の送信に関連付けられていないため、イベントには実際の行がない可能性があります。
  • ステップ4:ユーザーを選択して自分自身を認証するように求められます
  • ステップ5:編集>現在のプロジェクトのトリガー(または時計のようなアイコン)
  • ステップ6:新しいトリガーを追加する
  • ステップ7:onSpreadsheetSubmit |スプレッドシートから|フォーム送信時
  • ステップ8:認証して保存(または逆)
  • ステップ9:実際のフォーム送信を待機(または実行)してテストする
  • ステップ10:メールを確認する

詳細: https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events

4
alex

上記のJohnBのHOWTOはすばらしいものです。アップデート(2017年11月):

  • ステップ2:「Script Editor ...」は、フォームの右上にある垂直の「...」バーガーメニューにあります
  • ステップ6:「プロジェクトトリガー」は(時計のようなアイコン)(上に表示されている2番目のアイコン)にあります。
  • ステップ7:[新しいトリガーを追加]をクリックし、 "no myFunctions"警告を無視します。
  • ステップ8:存在しないようで、必要ないかもしれません。

上記の手順の多くでは、フォームの所有者による検証/承認が必要です。

1
alex