質問編集履歴

2

コードが見やすくなるよう修正しました。

2020/11/03 07:41

投稿

88yasu
88yasu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,12 @@
4
4
 
5
5
 
6
6
 
7
+ **・行いたいこと**
8
+
9
+ ---
10
+
11
+
12
+
7
13
  google formsでアンケートを集計して、Google Apps Scriptでアンケート結果に基づく得点を自動で計算するというプログラムを書きたいです。
8
14
 
9
15
  アンケートでは54問全ての問題で「0. いいえ」「1. どちらでもない」「2. はい」のいずれかを選んで頂くというものです。
@@ -16,6 +22,8 @@
16
22
 
17
23
 
18
24
 
25
+ ```google apps script
26
+
19
27
  function sendMessage(e) {
20
28
 
21
29
 
@@ -156,15 +164,17 @@
156
164
 
157
165
 
158
166
 
159
-
167
+ ```
168
+
169
+
170
+
160
-
171
+ **問題が発生する条件**
172
+
173
+ --
174
+
175
+
176
+
161
- トリガーを設定して、実際にアンケートを入力してみると
177
+ トリガーを設定して、実際にアンケートを入力してみると以下のようなエラーが出て処理が出来なくなります。
162
-
163
- b1 = a1.slice(0,1)の文章が50個ぐらいまでなら正常に処理されるのですが、51個あたりから処理できなくなります。
164
-
165
-
166
-
167
- トリガーのエラーとしては以下のように出てきます。
168
178
 
169
179
  TypeError: Cannot read property 'slice' of undefined
170
180
 
@@ -172,7 +182,27 @@
172
182
 
173
183
 
174
184
 
185
+ 58番目のコードは
186
+
187
+ b54 = a54.slice(0,1)
188
+
189
+ です。
190
+
191
+
192
+
193
+ **試してみたこと**
194
+
195
+ ---
196
+
197
+ 質問12個の同様のアンケートでは既に動くプログラムが作成できています。
198
+
199
+ 今回、数を増やしたらエラーが出たため、コードの数を減らしうて行きました。
200
+
201
+ この結果、代入を50個(b50 = a50.slice(0,1)まで)にするとデータを読み込むことを確認しました。
202
+
203
+
204
+
175
- 代入の最大数は50個なのかと思い、for文で処理を試みましたが、今度はfor文章の書き方が分かりません
205
+ この結果から、代入の最大数は50個なのかと思い、for文で処理を試みましたが、今度はfor文章の書き方が分からないという状況です
176
206
 
177
207
  for (var i = 1; i < 54; i++) {"b"+[i] = "a"+[i]+".slice(0,1)"}
178
208
 

1

コード全文を掲載いたしました

2020/11/03 07:41

投稿

88yasu
88yasu

スコア13

test CHANGED
File without changes
test CHANGED
@@ -8,29 +8,153 @@
8
8
 
9
9
  アンケートでは54問全ての問題で「0. いいえ」「1. どちらでもない」「2. はい」のいずれかを選んで頂くというものです。
10
10
 
11
-
12
-
13
- const [timeStamp, email, id, name, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, 中略a54] = e.values;
11
+ 先頭の文字だけに抽出して0, 1, 2のいずれかのデータをbのx番目のデータという形で数値化して因子項目別で足し算をして、回答者毎の新たなセルに書き出したいと考えています。
14
12
 
15
13
 
16
14
 
17
- とax番目の回答うような形で読みだして、
15
+ Google formsスプレッドシードスクリプトエディタの本文に記載したコードは以下の通りです(正確にはこの回答結果をアンケート回答者のメールに送信するため多少異なる部分がござます)。
18
16
 
19
17
 
20
18
 
21
- b1 = a1.slice(0,1)
22
-
23
- b2 = a2.slice(0,1)
24
-
25
- b3 = a3.slice(0,1)
26
-
27
-  (中略)
28
-
29
-  b54 = a54.slice(0,1)
19
+ function sendMessage(e) {
30
20
 
31
21
 
32
22
 
33
- として、先頭の文字だけに抽出して0, 1, 2のいずれかのデータをbのx番目のデータという形で数値化しています。
23
+ const [timeStamp, email, id, name, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, a32, a33, a34, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a45, a46, a47, a48, a49, a50, a51, a52, a53, a54] = e.values;
24
+
25
+
26
+
27
+ b1 = a1.slice(0,1)
28
+
29
+ b2 = a2.slice(0,1)
30
+
31
+ b3 = a3.slice(0,1)
32
+
33
+ b4 = a4.slice(0,1)
34
+
35
+ b5 = a5.slice(0,1)
36
+
37
+ b6 = a6.slice(0,1)
38
+
39
+ b7 = a7.slice(0,1)
40
+
41
+ b8 = a8.slice(0,1)
42
+
43
+ b9 = a9.slice(0,1)
44
+
45
+ b10 = a10.slice(0,1)
46
+
47
+ b11 = a11.slice(0,1)
48
+
49
+ b12 = a12.slice(0,1)
50
+
51
+ b13 = a13.slice(0,1)
52
+
53
+ b14 = a14.slice(0,1)
54
+
55
+ b15 = a15.slice(0,1)
56
+
57
+ b16 = a16.slice(0,1)
58
+
59
+ b17 = a17.slice(0,1)
60
+
61
+ b18 = a18.slice(0,1)
62
+
63
+ b19 = a19.slice(0,1)
64
+
65
+ b20 = a20.slice(0,1)
66
+
67
+ b21 = a21.slice(0,1)
68
+
69
+ b22 = a22.slice(0,1)
70
+
71
+ b23 = a23.slice(0,1)
72
+
73
+ b24 = a24.slice(0,1)
74
+
75
+ b25 = a25.slice(0,1)
76
+
77
+ b26 = a26.slice(0,1)
78
+
79
+ b27 = a27.slice(0,1)
80
+
81
+ b28 = a28.slice(0,1)
82
+
83
+ b29 = a29.slice(0,1)
84
+
85
+ b30 = a30.slice(0,1)
86
+
87
+ b31 = a31.slice(0,1)
88
+
89
+ b32 = a32.slice(0,1)
90
+
91
+ b33 = a33.slice(0,1)
92
+
93
+ b34 = a34.slice(0,1)
94
+
95
+ b35 = a35.slice(0,1)
96
+
97
+ b36 = a36.slice(0,1)
98
+
99
+ b37 = a37.slice(0,1)
100
+
101
+ b38 = a38.slice(0,1)
102
+
103
+ b39 = a39.slice(0,1)
104
+
105
+ b40 = a40.slice(0,1)
106
+
107
+ b41 = a41.slice(0,1)
108
+
109
+ b42 = a42.slice(0,1)
110
+
111
+ b43 = a43.slice(0,1)
112
+
113
+ b44 = a44.slice(0,1)
114
+
115
+ b45 = a45.slice(0,1)
116
+
117
+ b46 = a46.slice(0,1)
118
+
119
+ b47 = a47.slice(0,1)
120
+
121
+ b48 = a48.slice(0,1)
122
+
123
+ b49 = a49.slice(0,1)
124
+
125
+ b50 = a50.slice(0,1)
126
+
127
+ b51 = a51.slice(0,1)
128
+
129
+ b52 = a52.slice(0,1)
130
+
131
+ b53 = a53.slice(0,1)
132
+
133
+ b54 = a54.slice(0,1)
134
+
135
+
136
+
137
+ range = e.range;
138
+
139
+ p1 = range.getRow();
140
+
141
+ sheet = SpreadsheetApp.getActiveSheet()
142
+
143
+ sheet.getRange(p1, 60).setValue(parseInt(b1) + parseInt(b7)+ parseInt(b13)+ parseInt(b19)+ parseInt(b25)+ parseInt(b31)+ parseInt(b37)+ parseInt(b43)+ parseInt(b49)).getValue();
144
+
145
+ sheet.getRange(p1, 61).setValue(parseInt(b2) + parseInt(b8)+ parseInt(b14)+ parseInt(b20)+ parseInt(b26)+ parseInt(b32)+ parseInt(b38)+ parseInt(b44)+ parseInt(b50)).getValue();
146
+
147
+ sheet.getRange(p1, 62).setValue(parseInt(b3) + parseInt(b9)+ parseInt(b15)+ parseInt(b21)+ parseInt(b27)+ parseInt(b33)+ parseInt(b39)+ parseInt(b45)+ parseInt(b51)).getValue();
148
+
149
+ sheet.getRange(p1, 63).setValue(parseInt(b4) + parseInt(b10)+ parseInt(b16)+ parseInt(b22)+ parseInt(b28)+ parseInt(b34)+ parseInt(b40)+ parseInt(b46)+ parseInt(b52)).getValue();
150
+
151
+ sheet.getRange(p1, 64).setValue(parseInt(b5) + parseInt(b11)+ parseInt(b17)+ parseInt(b23)+ parseInt(b29)+ parseInt(b35)+ parseInt(b41)+ parseInt(b47)+ parseInt(b53)).getValue();
152
+
153
+ sheet.getRange(p1, 65).setValue(parseInt(b6) + parseInt(b12)+ parseInt(b18)+ parseInt(b24)+ parseInt(b30)+ parseInt(b36)+ parseInt(b42)+ parseInt(b48)+ parseInt(b54)).getValue();
154
+
155
+ }
156
+
157
+
34
158
 
35
159
 
36
160