teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

修正

2021/05/29 04:25

投稿

Tatsunosuke
Tatsunosuke

スコア599

answer CHANGED
@@ -8,7 +8,7 @@
8
8
  まず、HTMLを表示させるには、doGet()で受ける必要があります。
9
9
  ```gas
10
10
 
11
- //'https://script.google.com/a/macros/jritzkk.com/s/***/exec
11
+ //'https://script.google.com/a/macros/***/exec
12
12
  //↑これにアクセスすると↓この関数が必ず呼ばれます。
13
13
  function doGet(e){
14
14
    //htmlの表示
@@ -27,7 +27,7 @@
27
27
  回答が表示されるURLを作るためには、ユーザがどのような回答をしたかをURLに含ませます。
28
28
 
29
29
  ```gas
30
- //'https://script.google.com/a/macros/jritzkk.com/s/***/exec?answer=foo
30
+ //'https://script.google.com/a/macros/***/exec?answer=foo
31
31
  //↑これにアクセスすると↓e.parameterの中にanswer=fooが入っています。
32
32
 
33
33
  function doGet(e){

1

追記

2021/05/29 04:24

投稿

Tatsunosuke
Tatsunosuke

スコア599

answer CHANGED
@@ -1,3 +1,109 @@
1
+ 追記
2
+
3
+ 失礼しました!
4
+ ご希望の内容を叶えるのは、ある程度GASやJSを使えないと難しいかもしれません。
5
+
6
+ > Googleフォームを送信したあと、ユーザが解答を見られるように、解答を表示したHTMLファイルにリダイレクトすることです。
7
+
8
+ まず、HTMLを表示させるには、doGet()で受ける必要があります。
9
+ ```gas
10
+
11
+ //'https://script.google.com/a/macros/jritzkk.com/s/***/exec
12
+ //↑これにアクセスすると↓この関数が必ず呼ばれます。
13
+ function doGet(e){
14
+   //htmlの表示
15
+ }
16
+ ```
17
+ ただ、
18
+ > Googleフォームを送信したあと、ユーザが解答を見られるように、解答を表示したHTMLファイルにリダイレクトすることです。
19
+
20
+ を実装しようとすると、GOOGLEフォームの今の仕様では、リダイレクトができないため
21
+ フォームの「ガワ」を自分で実装する必要があります。
22
+ **そうなるとHTMlとCSSとGASとJS、そしてgoogle formの知識がそれぞれ必要となります。**
23
+
24
+ そのため比較的に実装できる方法としては、フォームが送信されたタイミングで、ユーザに回答が表示されるURLを入れたメールを送信するという方法があります。
25
+
26
+
27
+ 回答が表示されるURLを作るためには、ユーザがどのような回答をしたかをURLに含ませます。
28
+
29
+ ```gas
30
+ //'https://script.google.com/a/macros/jritzkk.com/s/***/exec?answer=foo
31
+ //↑これにアクセスすると↓e.parameterの中にanswer=fooが入っています。
32
+
33
+ function doGet(e){
34
+   var answer =e.parameter.answer
35
+ console.log(answer) //=> foo
36
+ }
37
+
38
+ ```
39
+
40
+ これを利用して、fooに対する答えをHTMlで表示する形になります。
41
+ **そうなると結局こちらでもHTMlとCSSとGASとJSの知識がそれぞれ必要となります。**
42
+ ガワだけ作るよりは簡単です
43
+
44
+
45
+ であれば、わざわざフォームを挟まなくても、最初からクイズ自体をGASのHTMLで作ってしまった方が、
46
+ やりたい内容に制約を受けずに作ることが可能です。
47
+
48
+ こちらの方の質問が、同じような感じです。
49
+ [https://teratail.com/questions/339997](https://teratail.com/questions/339997)
50
+
51
+
52
+
53
+ 画面にキーワードを入れて、実行すると該当するアイテムが返ってくるという仕組みです。
54
+ **簡易的に試してみたいということであれば、以下をGASに登録いただければ試せると思います。**
55
+
56
+ ```html
57
+ <html>
58
+
59
+ <body>
60
+ <form name="searchForm">
61
+   検索文字:<input type="text" width="30%" id="searchWord">
62
+   <input type="button" value="送信" onclick="send()">  //①
63
+   <div id="innerResluts"></div>
64
+ </form>
65
+
66
+
67
+ <script>
68
+ // HTMLに書き込む処理
69
+ function innerHTMLFunc(resluts) {   //⑥
70
+ innerResluts.innerHTML = resluts
71
+ }
72
+
73
+ function send() {
74
+ //検索ワード
75
+ var searchWord = document.getElementById("searchWord") //②
76
+     //GAS側の関数を呼び出す。
77
+ //=>GAS側:getValue関数(検索値)成功したら、HTML側:innerHTMLFuncに結果を渡す。
78
+ google.script.run.withSuccessHandler(innerHTMLFunc)  //③  //⑤
79
+ .getValue(searchWord.value)
80
+ }
81
+
82
+ </script>
83
+ </body>
84
+
85
+ </html>
86
+ ```
87
+ ```gas
88
+ function getValue(searchWord){  //④
89
+ //スプレッドシートから必要な処理を行う。
90
+ var resluts = "サンプルテキスト 検索値は:"+searchWord;
91
+ return resluts
92
+ }
93
+ function doGet(e) {
94
+ return HtmlService.createTemplateFromFile("index").evaluate();
95
+
96
+ }
97
+ ```
98
+
99
+ この内容が難しいなと感じるようでしたら、まずは、GASで自由にhtmlを表示させられるようになることを
100
+ 目指されるのがいいかと思います!
101
+
102
+
103
+
104
+
105
+ ---
106
+
1
107
  こうなります。
2
108
  e.parameterの部分は適宜変更ください。
3
109