前提・実現したいこと
既存のgoogleフォーム(https://forms.gle/D6fcHs9mXbTQmGFn7)で試合結果を連携させてあるgoogleスプレッドシートに送信して、試合の戦績管理をしています(スプシにピポットテーブル付けて集計しています)。入力の手間を軽減させるためにgoogle apps scriptを用いて下記のことはできますでしょうか、画像を用いて説明致します。
①の名前を固定化(最初から山田に選択肢が付いている状態にする)
②使用キャラを連続して使用する場合は、毎回選択するのが手間なので固定化したり固定化解除したりする
③試合月を入力せずに自動で判断して送信する
あと、google apps scriptを用いた場合、スプレッドシートが重くならないでしょうか
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア640
0
ベストアンサー
こちらを参考に1は可能だと思います。
2は都合よく解除・固定はできないので、1と同じように初期値にするのが良いのではないかと思います。
3はフォームから送ると必ずタイムスタンプがつくので、たとえば7月2日になってから6月28日の記録をつける、ということがないなら項目が不要ですし、そういう用途があるとしても必須項目にせずさかのぼって記入するときだけ任意に手で入れるようにしたら良いように思います。
したがってスクリプトは不要です。
スクリプトを実行することで重くなるかですが、どこにどういう機能をつけるかによります。質問でやりたいことは(仮にできるとして)フォームで何かするはずなのでシートには影響しません。今回のものをフォームのスクリプトで実現するのは難しいと思うのですが、その回避としてスプレッドシートにスクリプトを仕掛けるとしてもフォーム送信時トリガーだと考えられるので編集中のシートは重くならないと思います。
投稿2019/07/02 22:06
総合スコア12705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/03 22:37
2019/07/05 07:46
2019/07/11 14:06
2019/08/13 14:13
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/03 10:43
2019/07/03 22:38