質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

0回答

592閲覧

スプレッドシートの文字を利用した複数選択肢と申込数に応じた定員制限

okayama-miyake

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

1クリップ

投稿2021/08/01 16:43

編集2021/08/04 00:30

前提・実現したいこと

プログラム初心者です。
Google Apps Script でGoogleフォームのスプレッドシートの文字を利用して、
日程のプルダウンを表示させ、申込数にあわせて日程ごとの定員制限をかけ、
Googleフォームのヘッダー説明文に種類ごとの残数を表示させたいです。
また、自動返信メールで申し込み内容を送信したいと思っています。

最初に↓の他サイトを参考にしたが、回答数の制限だったため、希望している内容にならなかった。
https://qiita.com/GMA/items/e672c18b09d84c753973
https://yukaobu.wordpress.com/2017/11/17/gf-quantity/

その後、↓のページを参考に作成したが、
https://teratail.com/questions/181981
以下のエラーメッセージが発生しました。

フォームに紐づけされているスプレッドシートには、「フォームの回答」シートと「申込人数」シートのふたつがあります。
「申込人数」シートの申込人数は、フォームの回答シートから、SUMIFS関数で参照しています。

見本と異なる点は、申込日2が無いこと、残数をヘッダーに表示させたいこと、
日程はすべて、2日間ずつのため、末尾のソースコードを日付ではなく、選択した日程(セル値)で取得したいです。

発生している問題・エラーメッセージ

Fsubmitorm を実行しようとしましたが、プロジェクトを保存できませんでした。

該当のソースコード

//FormApp.getActiveForm() function Fsubmitorm(e){ var itemResponses = e.response.getItemResponses(); var message = ''; var username = ''; var K = ''; var mail = ''; for (var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); if (question == '名前'){ username = answer; } if (question == 'メールアドレス'){ mail = answer; } k=''; const obj = getData(); if (question == '申込人数'){ if(answer && obj[answer] <= 0) { k='は定員に達していますので受付できません。'; } else { k='に受付いたしました'; } } message = message + '. ' + question + ': ' + answer + k + '\n'; } var title = 'お申し込みありがとうございます'; var content = username + '様\n\nお申し込ありがとうございます。\n' + '※このメールはお申込みをいただいた方に自動送信されます。\n\n' + message; MailApp.sendEmail(mail, title, content); } function getData() { var ret = {}; const url = "https://docs.google.com/spreadsheets/d/XXXX/edit#gid=0"; //// 上のxxxxはスプレッドシートのURLを入れています。 var spreadsheet = SpreadsheetApp.openByUrl(url); SpreadsheetApp.openByUrl(url).getSheetByName('申込人数').getRange(2,1,3,5).getValues().forEach(function(e){ ret[(e[0].getvalue()] = e[4]}); return ret; }

試したこと

上記サイトのソースコードをまねて作成したが、エラーとなった。

補足情報(FW/ツールのバージョンなど)

Chrome

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sawa

2021/08/04 00:24

Google Apps Script というタグがあるので、それを付けた方がよいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問