回答編集履歴

5

修正

2021/12/13 15:14

投稿

退会済みユーザー
test CHANGED
@@ -98,27 +98,27 @@
98
98
 
99
99
  // 'XX列の質問項目' は、実際のフォームの各質問項目に変えてください。
100
100
 
101
- const C = e.namedValues['C列の質問項目'][0];
101
+ const C = encodeURI(e.namedValues['C列の質問項目'][0]);
102
-
102
+
103
- const D = e.namedValues['D列の質問項目'][0];
103
+ const D = encodeURI(e.namedValues['D列の質問項目'][0]);
104
-
104
+
105
- const F = e.namedValues['F列の質問項目'][0];
105
+ const F = encodeURI(e.namedValues['F列の質問項目'][0]);
106
-
106
+
107
- const G = e.namedValues['G列の質問項目'][0];
107
+ const G = encodeURI(e.namedValues['G列の質問項目'][0]);
108
-
108
+
109
- const H = e.namedValues['H列の質問項目'][0];
109
+ const H = encodeURI(e.namedValues['H列の質問項目'][0]);
110
-
110
+
111
- const I = e.namedValues['I列の質問項目'][0];
111
+ const I = encodeURI(e.namedValues['I列の質問項目'][0]);
112
-
112
+
113
- const J = e.namedValues['J列の質問項目'][0];
113
+ const J = encodeURI(e.namedValues['J列の質問項目'][0]);
114
-
114
+
115
- const K = e.namedValues['K列の質問項目'][0];
115
+ const K = encodeURI(e.namedValues['K列の質問項目'][0]);
116
-
116
+
117
- const L = e.namedValues['L列の質問項目'][0];
117
+ const L = encodeURI(e.namedValues['L列の質問項目'][0]);
118
-
118
+
119
- const M = e.namedValues['M列の質問項目'][0];
119
+ const M = encodeURI(e.namedValues['M列の質問項目'][0]);
120
-
120
+
121
- const N = e.namedValues['N列の質問項目'][0];
121
+ const N = encodeURI(e.namedValues['N列の質問項目'][0]);
122
122
 
123
123
 
124
124
 
@@ -190,11 +190,11 @@
190
190
 
191
191
  ```
192
192
 
193
- const C = e.namedValues['好きな果物は何ですか?'][0];
193
+ const C = encodeURI(e.namedValues['好きな果物は何ですか?'][0]);
194
-
194
+
195
- const D = e.namedValues['好きな動物は何ですか?'][0];
195
+ const D = encodeURI(e.namedValues['好きな動物は何ですか?'][0]);
196
-
196
+
197
- const F = e.namedValues['好きな野菜はなんですか?'][0];
197
+ const F = encodeURI(e.namedValues['好きな野菜はなんですか?'][0]);
198
198
 
199
199
  const G = ...
200
200
 

4

追加

2021/12/13 15:14

投稿

退会済みユーザー
test CHANGED
@@ -175,3 +175,31 @@
175
175
  }
176
176
 
177
177
  ```
178
+
179
+ --------
180
+
181
+
182
+
183
+ 「'XX列の質問項目' は、実際のフォームの各質問項目に変えてください。」というのは下のような意味です。
184
+
185
+ たとえばフォームが図のような質問だと仮定します。
186
+
187
+ ![イメージ説明](27ab39a696e7e9d93050b14cf295e551.png)
188
+
189
+ このとき、色の枠で囲った部分を、それぞれe.namedValues['○○']の「○○」に入れてください、という意味です。
190
+
191
+ ```
192
+
193
+ const C = e.namedValues['好きな果物は何ですか?'][0];
194
+
195
+ const D = e.namedValues['好きな動物は何ですか?'][0];
196
+
197
+ const F = e.namedValues['好きな野菜はなんですか?'][0];
198
+
199
+ const G = ...
200
+
201
+ ...
202
+
203
+ ..
204
+
205
+ ```

3

修正

2021/12/13 15:09

投稿

退会済みユーザー
test CHANGED
@@ -84,21 +84,13 @@
84
84
 
85
85
 
86
86
 
87
- const answeredName = e.values[3] // 回答されたお名前
87
+ const answeredName = e.namedValues['名前'][0]; // 回答されたお名前
88
88
 
89
- const answeredEmail = e.values[4] // 回答されたEmail
89
+ const answeredEmail = e.namedValues['Email'][0]; // 回答されたEmail
90
90
 
91
91
  const ownName = '自分の名前' // こちらの名前
92
92
 
93
93
  const title = "タイトル件名"
94
-
95
-
96
-
97
- const row = sheet.getLastRow(); //最終行を取得
98
-
99
- const url = sheet.getRange(row, 15).getValue(); //定数urlにO列(URL生成の列)の最終行にあるセルの中身を取得
100
-
101
-
102
94
 
103
95
 
104
96
 

2

追加

2021/12/12 08:25

投稿

退会済みユーザー
test CHANGED
@@ -43,3 +43,143 @@
43
43
  以下略
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ ---
50
+
51
+ #追記
52
+
53
+
54
+
55
+ > フォームの解答以外のセルを出力するにはどうしたら良いかがわかりません。
56
+
57
+
58
+
59
+ フォーム送信して新しいデータが最下行に追加された時、O列に入っている式が計算される前(ARRAYFORMULAが走る前)にスクリプトが実行されて、空白セルとしてデータが読み取られてしまっているのが原因と思われます。
60
+
61
+
62
+
63
+ 解決方法として、O列に入っている数式と同じものを、スクリプト上で組み立てるやり方が考えられます。
64
+
65
+
66
+
67
+ ※下記のコード内の'XX列の質問項目' は、実際のフォームの質問項目に変えてください。
68
+
69
+ (3行目にnamedValuesの内容をログ出力するコードを追加したので、その出力を参考に)
70
+
71
+ ```js
72
+
73
+ function sendReply(e) {
74
+
75
+ // 追加
76
+
77
+ console.log(JSON.stringify(e.namedValues, undefined, 1) // フォームの質問項目の内容を出力
78
+
79
+
80
+
81
+ const ss = SpreadsheetApp.getActiveSpreadsheet();
82
+
83
+ const sheet = ss.getSheetByName('回答内容とurl生成のセルがあるシート');
84
+
85
+
86
+
87
+ const answeredName = e.values[3] // 回答されたお名前
88
+
89
+ const answeredEmail = e.values[4] // 回答されたEmail
90
+
91
+ const ownName = '自分の名前' // こちらの名前
92
+
93
+ const title = "タイトル件名"
94
+
95
+
96
+
97
+ const row = sheet.getLastRow(); //最終行を取得
98
+
99
+ const url = sheet.getRange(row, 15).getValue(); //定数urlにO列(URL生成の列)の最終行にあるセルの中身を取得
100
+
101
+
102
+
103
+
104
+
105
+ // -------追加-------
106
+
107
+ // 'XX列の質問項目' は、実際のフォームの各質問項目に変えてください。
108
+
109
+ const C = e.namedValues['C列の質問項目'][0];
110
+
111
+ const D = e.namedValues['D列の質問項目'][0];
112
+
113
+ const F = e.namedValues['F列の質問項目'][0];
114
+
115
+ const G = e.namedValues['G列の質問項目'][0];
116
+
117
+ const H = e.namedValues['H列の質問項目'][0];
118
+
119
+ const I = e.namedValues['I列の質問項目'][0];
120
+
121
+ const J = e.namedValues['J列の質問項目'][0];
122
+
123
+ const K = e.namedValues['K列の質問項目'][0];
124
+
125
+ const L = e.namedValues['L列の質問項目'][0];
126
+
127
+ const M = e.namedValues['M列の質問項目'][0];
128
+
129
+ const N = e.namedValues['N列の質問項目'][0];
130
+
131
+
132
+
133
+ const url = "https://docs.google.com/forms/d/e/Googleフォームのキー/viewform?usp=pp_url&entry.2145272979="
134
+
135
+ + C + "&entry.918876992=" + D
136
+
137
+ + "&entry.965629543=" + F
138
+
139
+ + "&entry.789231669=" + G
140
+
141
+ + "&entry.55383597=" + H
142
+
143
+ + "&entry.343743215=" + I
144
+
145
+ + "&entry.1212281365=" + J
146
+
147
+ + "&entry.2139868976=" + K
148
+
149
+ + "&entry.36015981=" + L
150
+
151
+ + "&entry.2091679258=" + M
152
+
153
+ + "&entry.269090822=" + N
154
+
155
+
156
+
157
+ // -------追加ここまで-------
158
+
159
+
160
+
161
+ const body = `
162
+
163
+ ${answeredName} 様
164
+
165
+
166
+
167
+ メール本文
168
+
169
+
170
+
171
+ ${url}
172
+
173
+ `
174
+
175
+ GmailApp.sendEmail(answeredEmail, title, body)
176
+
177
+
178
+
179
+ (以下略)
180
+
181
+
182
+
183
+ }
184
+
185
+ ```

1

修正

2021/12/12 08:01

投稿

退会済みユーザー
test CHANGED
@@ -8,7 +8,11 @@
8
8
 
9
9
 
10
10
 
11
+ そして、複数チェックボックス以外のアンケート項目は
12
+
11
- e.namedValues('質問項目')
13
+ e.namedValues['質問項目'][0];
14
+
15
+ という書き方で、回答を取り出せます。
12
16
 
13
17
 
14
18
 
@@ -30,9 +34,9 @@
30
34
 
31
35
 
32
36
 
33
- const answeredName = e.namedValues['名前']; // 回答されたお名前
37
+ const answeredName = e.namedValues['名前'][0]; // 回答されたお名前
34
38
 
35
- const answeredEmail = e.namedValues['Email']; // 回答されたEmail
39
+ const answeredEmail = e.namedValues['Email'][0]; // 回答されたEmail
36
40
 
37
41
 
38
42