🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Google

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

Q&A

解決済

2回答

4268閲覧

Googleフォームの下記の機能をgoogle apps scriptを用いて実現可能でしょうか

KOMINEMAN

総合スコア13

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

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

Google

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

0グッド

0クリップ

投稿2019/07/02 12:24

前提・実現したいこと

既存のgoogleフォーム(https://forms.gle/D6fcHs9mXbTQmGFn7)で試合結果を連携させてあるgoogleスプレッドシートに送信して、試合の戦績管理をしています(スプシにピポットテーブル付けて集計しています)。入力の手間を軽減させるためにgoogle apps scriptを用いて下記のことはできますでしょうか、画像を用いて説明致します。

①の名前を固定化(最初から山田に選択肢が付いている状態にする)
②使用キャラを連続して使用する場合は、毎回選択するのが手間なので固定化したり固定化解除したりする
③試合月を入力せずに自動で判断して送信する
あと、google apps scriptを用いた場合、スプレッドシートが重くならないでしょうか

以上、よろしくお願いします。
イメージ説明

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

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

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

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

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

guest

回答2

0

コードで対応するなら。
2用に事前登録用のフォームを別に用意しておいて
既定値をパラメータに渡すためのスクリプトを用意し、WEB公開⇒公開アドレスを踏むと事前登録情報と今日の日付から事前入力値をパラメータに渡した入力用フォームリンクを作成(ここがスクリプト)⇒リンクアドレスをhtmlで表示のようなやり方が可能です。

GAS

1function doGet() { 2 var formlink = makepreimputform(); 3 var html = HtmlService.createHtmlOutputFromFile("フォームリンク設置ページ"); 4 var content = html.getContent().replace(/%filelink%/, formlink ); 5 return HtmlService.createHtmlOutput(content); 6} 7function makepreimputform() { 8 var SPREADSHEET_ID = ""; 9 var SS = SpreadsheetApp.openById(SPREADSHEET_ID); 10 var sh = SS.getSheetByName("使用キャラ一覧"); 11 var user = Session.getActiveUser().getEmail(); 12 var usernamelist = sh.getRange("ユーザー名の列範囲").getValues(); 13 var characterlist = sh.getRange("選択キャラの列範囲").getValues(); 14 var usernamelist =Array.prototype.concat.apply([], usernamelist); 15 var targetRow = usernamelist.indexOf(user); 16 if(targetRow<0){}else{ 17 var character = characterlist[targetRow-1]; 18 } 19 var month = new Date().getMonth()+1; 20 var preimputformlink = "フォームリンクの本体" 21 +"entry.キャラ質問のナンバー="+character+"&" 22 +"entry.月度質問のナンバー="+month 23 return preimputformlink; 24}

html

1<html> 2 <body> 3 <form id="form" action="#"> 4 <div> 5 <font size="6" color="#434343">スマブラ戦績入力</font> 6 </div> 7 <br> 8 <br> 9 <div> 10 <a href="%filelink%"><button class="button2" type="button" >戦績入力フォーム</button></a> 11 </div> 12 <br> 13 <br> 14 <a href="https://forms.gle/f1iEpEHMVQ3NdeheA"><button class="button1" type="button" >事前キャラ登録フォーム</button></a> 15 <br> 16 初回入力時は、最初に「事前キャラ登録フォーム」から設定を完了させてください。キャラ設定送信後本ページを更新表示することで、戦績入力フォームが利用できるようになります。 17 </form> 18 </body> 19</html>

投稿2019/07/03 06:13

編集2019/07/05 08:20
hiroshi0240

総合スコア640

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

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

KOMINEMAN

2019/07/03 10:43

わかりました!ご丁寧にありがとうございます!
papinianus

2019/07/03 22:38

素晴らしいですね。回答者として見習いたいです
guest

0

ベストアンサー

こちらを参考に1は可能だと思います。

2は都合よく解除・固定はできないので、1と同じように初期値にするのが良いのではないかと思います。

3はフォームから送ると必ずタイムスタンプがつくので、たとえば7月2日になってから6月28日の記録をつける、ということがないなら項目が不要ですし、そういう用途があるとしても必須項目にせずさかのぼって記入するときだけ任意に手で入れるようにしたら良いように思います。

したがってスクリプトは不要です。

スクリプトを実行することで重くなるかですが、どこにどういう機能をつけるかによります。質問でやりたいことは(仮にできるとして)フォームで何かするはずなのでシートには影響しません。今回のものをフォームのスクリプトで実現するのは難しいと思うのですが、その回避としてスプレッドシートにスクリプトを仕掛けるとしてもフォーム送信時トリガーだと考えられるので編集中のシートは重くならないと思います。

投稿2019/07/02 22:06

papinianus

総合スコア12705

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

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

KOMINEMAN

2019/07/03 10:48

回答ありがとうございます! 1、に関しては出来ました! 2、は柔軟に解除固定出来ないのですね^^: 3、に関して、タイムスタンプから特定の月の情報だけを集計することは可能でしょうか 以上、よろしくお願いします!
papinianus

2019/07/03 22:37

3 できます 今スマホなんで覚えてたら後で具体的に書きます
KOMINEMAN

2019/07/05 07:46

すみません><ありがとうございます!
papinianus

2019/07/11 14:06

いまさらですが、month関数がありました。 たぶんタイムスタンプはA列で、仮にY列に自由回答した月が入るとしましょう 集計用の列Zには=IF(Y1=="", MONTH(A1), Y1)として、Z列で集計してみてください。
KOMINEMAN

2019/08/13 14:13

返信遅れましてすみません>< ありがとうございます!month関数でも試してみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問