フォームしたい(FormApp

回答後のメッセージをカスタマイズしたい

function set_confirmation_message() {
    const from = FormApp.getActive();
    const doc = DocumentApp.openById("ドキュメントID");
    const txt = doc.getBody().getText();
    Logger.info(txt);
    form.setConfirmationMessage(txt)
}

フォーム回答後のメッセージはカスタマイズできます。 フォームの設定からもできますが、メッセージで改行ができません。 複雑な文章を掲載したい場合は、本文をGoogleドキュメントで作成し、setConfirmationMessageで読み込ませるとよいでしょう。 ドキュメントの内容を変更した場合は、再度[実行]を押し、読み込ませる必要があります。

フォーム入力時にデータを取得したい

function onFormSubmit(e) {
    // タイムスタンプ
    const timestamp = e.response.getTimeStamp();
    const datetime = Utilities.formatDate(timestamp, "JST", "yyyy-MM-dd'T'HH:mm:ss")
    // 回答したメールアドレス
    const respondentEmail = e.response.getRespondentEmail();
    // 回答内容
    const itemResponses = e.response.getItemResponses();
    const responses = itemResponses.map(function(itemResponse) {
        return itemResponse.getResponse();
    });
}

フォームに入力があった場合のデータはonFormSubmit関数で取得&操作できます。 e.responseFormResponseクラスで、この変数からから情報を取得できます。

入力時のタイムスタンプはgetTimeStampで取得できます。 そのままだと日付の表示形式が米国風なので、Utilities.formatDateを使ってISO8601形式に変換しています。 MMが月で、mmが分です(Pythonと逆なので紛らわしいです)

回答内容はgetItemResponsesで得られるItemResponseクラスに入っています。 ウェブを検索するとe.valuesで回答内容を取得できるという記事を見かけるのですが、Undefinedが返ってきます。 適切なドキュメントが見つけられないので、itemResponses.mapして、回答内容を配列にしています。

参考

itemResponses.map(...)している部分は、おそらくPythonのリスト内容表表記と同じことをしているはずです。

1responses = [itemResponse.getResponse() for itemResponse in itemResponses]

フォーム入力時にカスタムメールを送信したい

function onFormSubmit(e) {
    const message = response_to_text(e.response);
    // test_send_to_group(message);
    send_to_group(message);
}

上述したonFormSubmit関数で取得したe.responseを実際に活用する方法です。 おそらく、フォームに入力があった場合には、メールやSlackなどで関係者に通知したいことが多いと思います。

参考

Googleフォームの共同編集者にアサインしたアカウントであれば、標準機能を使って各人で通知設定の可否を設定できます。 また、回答者に回答内容のコピーを自動で送信できます。 今回のケースは「カスタム」したメッセージなどを送りたいケースを想定しています。