回答編集履歴

2

修正

2021/05/29 04:25

投稿

Tatsunosuke
Tatsunosuke

スコア599

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- //'https://script.google.com/a/macros/jritzkk.com/s/***/exec
21
+ //'https://script.google.com/a/macros/***/exec
22
22
 
23
23
  //↑これにアクセスすると↓この関数が必ず呼ばれます。
24
24
 
@@ -56,7 +56,7 @@
56
56
 
57
57
  ```gas
58
58
 
59
- //'https://script.google.com/a/macros/jritzkk.com/s/***/exec?answer=foo
59
+ //'https://script.google.com/a/macros/***/exec?answer=foo
60
60
 
61
61
  //↑これにアクセスすると↓e.parameterの中にanswer=fooが入っています。
62
62
 

1

追記

2021/05/29 04:24

投稿

Tatsunosuke
Tatsunosuke

スコア599

test CHANGED
@@ -1,3 +1,215 @@
1
+ 追記
2
+
3
+
4
+
5
+ 失礼しました!
6
+
7
+ ご希望の内容を叶えるのは、ある程度GASやJSを使えないと難しいかもしれません。
8
+
9
+
10
+
11
+ > Googleフォームを送信したあと、ユーザが解答を見られるように、解答を表示したHTMLファイルにリダイレクトすることです。
12
+
13
+
14
+
15
+ まず、HTMLを表示させるには、doGet()で受ける必要があります。
16
+
17
+ ```gas
18
+
19
+
20
+
21
+ //'https://script.google.com/a/macros/jritzkk.com/s/***/exec
22
+
23
+ //↑これにアクセスすると↓この関数が必ず呼ばれます。
24
+
25
+ function doGet(e){
26
+
27
+   //htmlの表示
28
+
29
+ }
30
+
31
+ ```
32
+
33
+ ただ、
34
+
35
+ > Googleフォームを送信したあと、ユーザが解答を見られるように、解答を表示したHTMLファイルにリダイレクトすることです。
36
+
37
+
38
+
39
+ を実装しようとすると、GOOGLEフォームの今の仕様では、リダイレクトができないため
40
+
41
+ フォームの「ガワ」を自分で実装する必要があります。
42
+
43
+ **そうなるとHTMlとCSSとGASとJS、そしてgoogle formの知識がそれぞれ必要となります。**
44
+
45
+
46
+
47
+ そのため比較的に実装できる方法としては、フォームが送信されたタイミングで、ユーザに回答が表示されるURLを入れたメールを送信するという方法があります。
48
+
49
+
50
+
51
+
52
+
53
+ 回答が表示されるURLを作るためには、ユーザがどのような回答をしたかをURLに含ませます。
54
+
55
+
56
+
57
+ ```gas
58
+
59
+ //'https://script.google.com/a/macros/jritzkk.com/s/***/exec?answer=foo
60
+
61
+ //↑これにアクセスすると↓e.parameterの中にanswer=fooが入っています。
62
+
63
+
64
+
65
+ function doGet(e){
66
+
67
+   var answer =e.parameter.answer
68
+
69
+ console.log(answer) //=> foo
70
+
71
+ }
72
+
73
+
74
+
75
+ ```
76
+
77
+
78
+
79
+ これを利用して、fooに対する答えをHTMlで表示する形になります。
80
+
81
+ **そうなると結局こちらでもHTMlとCSSとGASとJSの知識がそれぞれ必要となります。**
82
+
83
+ ガワだけ作るよりは簡単です
84
+
85
+
86
+
87
+
88
+
89
+ であれば、わざわざフォームを挟まなくても、最初からクイズ自体をGASのHTMLで作ってしまった方が、
90
+
91
+ やりたい内容に制約を受けずに作ることが可能です。
92
+
93
+
94
+
95
+ こちらの方の質問が、同じような感じです。
96
+
97
+ [https://teratail.com/questions/339997](https://teratail.com/questions/339997)
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ 画面にキーワードを入れて、実行すると該当するアイテムが返ってくるという仕組みです。
106
+
107
+ **簡易的に試してみたいということであれば、以下をGASに登録いただければ試せると思います。**
108
+
109
+
110
+
111
+ ```html
112
+
113
+ <html>
114
+
115
+
116
+
117
+ <body>
118
+
119
+ <form name="searchForm">
120
+
121
+   検索文字:<input type="text" width="30%" id="searchWord">
122
+
123
+   <input type="button" value="送信" onclick="send()">  //①
124
+
125
+   <div id="innerResluts"></div>
126
+
127
+ </form>
128
+
129
+
130
+
131
+
132
+
133
+ <script>
134
+
135
+ // HTMLに書き込む処理
136
+
137
+ function innerHTMLFunc(resluts) {   //⑥
138
+
139
+ innerResluts.innerHTML = resluts
140
+
141
+ }
142
+
143
+
144
+
145
+ function send() {
146
+
147
+ //検索ワード
148
+
149
+ var searchWord = document.getElementById("searchWord") //②
150
+
151
+     //GAS側の関数を呼び出す。
152
+
153
+ //=>GAS側:getValue関数(検索値)成功したら、HTML側:innerHTMLFuncに結果を渡す。
154
+
155
+ google.script.run.withSuccessHandler(innerHTMLFunc)  //③  //⑤
156
+
157
+ .getValue(searchWord.value)
158
+
159
+ }
160
+
161
+
162
+
163
+ </script>
164
+
165
+ </body>
166
+
167
+
168
+
169
+ </html>
170
+
171
+ ```
172
+
173
+ ```gas
174
+
175
+ function getValue(searchWord){  //④
176
+
177
+ //スプレッドシートから必要な処理を行う。
178
+
179
+ var resluts = "サンプルテキスト 検索値は:"+searchWord;
180
+
181
+ return resluts
182
+
183
+ }
184
+
185
+ function doGet(e) {
186
+
187
+ return HtmlService.createTemplateFromFile("index").evaluate();
188
+
189
+
190
+
191
+ }
192
+
193
+ ```
194
+
195
+
196
+
197
+ この内容が難しいなと感じるようでしたら、まずは、GASで自由にhtmlを表示させられるようになることを
198
+
199
+ 目指されるのがいいかと思います!
200
+
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+ ---
210
+
211
+
212
+
1
213
  こうなります。
2
214
 
3
215
  e.parameterの部分は適宜変更ください。