質問編集履歴
20
修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Google apps Scriptで作成
|
1
|
+
Google apps Scriptで作成のHTMLテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をHTML上に表示したい
|
test
CHANGED
File without changes
|
19
修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Google apps Scriptで作成した
|
1
|
+
Google apps Scriptで作成したテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をフォーム上に表示したい
|
test
CHANGED
File without changes
|
18
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -66,6 +66,8 @@
|
|
66
66
|
|
67
67
|
```Google apps script
|
68
68
|
|
69
|
+
【1つ目のコード】**正常に動作します。**
|
70
|
+
|
69
71
|
//main.gs
|
70
72
|
|
71
73
|
|
17
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -188,6 +188,14 @@
|
|
188
188
|
|
189
189
|
//main.gs
|
190
190
|
|
191
|
+
function doGet() {
|
192
|
+
|
193
|
+
return HtmlService.createTemplateFromFile('index').evaluate;
|
194
|
+
|
195
|
+
}
|
196
|
+
|
197
|
+
|
198
|
+
|
191
199
|
function kensakus(a,b) {
|
192
200
|
|
193
201
|
if (a=== undefined)
|
16
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -178,7 +178,7 @@
|
|
178
178
|
|
179
179
|
//略
|
180
180
|
|
181
|
-
|
181
|
+
```
|
182
182
|
|
183
183
|
``````google apps script
|
184
184
|
|
15
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -180,4 +180,116 @@
|
|
180
180
|
|
181
181
|
|
182
182
|
|
183
|
+
``````google apps script
|
184
|
+
|
185
|
+
【2つ目のコード】とりあえずここまでできてます。。
|
186
|
+
|
187
|
+
|
188
|
+
|
189
|
+
//main.gs
|
190
|
+
|
191
|
+
function kensakus(a,b) {
|
192
|
+
|
193
|
+
if (a=== undefined)
|
194
|
+
|
195
|
+
{
|
196
|
+
|
197
|
+
b="undefined";
|
198
|
+
|
199
|
+
return b;
|
200
|
+
|
201
|
+
}
|
202
|
+
|
203
|
+
else if (b=== undefined)
|
204
|
+
|
205
|
+
{
|
206
|
+
|
207
|
+
b="undefined";
|
208
|
+
|
209
|
+
return b;
|
210
|
+
|
211
|
+
}
|
212
|
+
|
213
|
+
else{
|
214
|
+
|
215
|
+
var texta = a;
|
216
|
+
|
217
|
+
var textb = b;
|
218
|
+
|
219
|
+
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
220
|
+
|
221
|
+
var range = datasheet.getRange("C:C").getValues(); //一番長いC列の最終行取得
|
222
|
+
|
223
|
+
var lastRow = range.filter(String).length;
|
224
|
+
|
225
|
+
var loginData = datasheet.getRange(1, 3, lastRow, 5).getValues(); //1~lastRow行目、3~5列分を二次元配列として取得
|
226
|
+
|
227
|
+
loginData = loginData.filter(
|
228
|
+
|
229
|
+
function(v) {return v[?] == ??;} ** //ここの検索方法がわかりません。**
|
230
|
+
|
231
|
+
);
|
232
|
+
|
233
|
+
try{
|
234
|
+
|
235
|
+
var seikou = loginData[?][?]; **//どう記述したらいいのかわかりません。**
|
236
|
+
|
237
|
+
return seikou;
|
238
|
+
|
239
|
+
}catch(e){
|
240
|
+
|
241
|
+
seikou = "該当なし";
|
242
|
+
|
243
|
+
return seikou;
|
244
|
+
|
245
|
+
}
|
246
|
+
|
247
|
+
}
|
248
|
+
|
249
|
+
}
|
250
|
+
|
251
|
+
|
252
|
+
|
253
|
+
//index.html
|
254
|
+
|
255
|
+
//略
|
256
|
+
|
257
|
+
2つのテキストボックス
|
258
|
+
|
259
|
+
<input type="number" id="input">
|
260
|
+
|
261
|
+
<input type="number" id="inputs">
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
<!--このボタンを押すと下のスクリプト動作-->
|
266
|
+
|
267
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
<!--ここで検索結果表示したい。-->
|
272
|
+
|
273
|
+
<div id="outputs"></div>
|
274
|
+
|
275
|
+
<script>
|
276
|
+
|
277
|
+
function test() {
|
278
|
+
|
279
|
+
var a= document.getElementById("input").value;
|
280
|
+
|
281
|
+
var b= document.getElementById("inputs").value;
|
282
|
+
|
283
|
+
google.script.run.withSuccessHandler(results).kensakus(a,b);
|
284
|
+
|
285
|
+
function results(data) {
|
286
|
+
|
287
|
+
document.getElementById("outputs").innerHTML = data;
|
288
|
+
|
289
|
+
}
|
290
|
+
|
291
|
+
</script>
|
292
|
+
|
293
|
+
//略
|
294
|
+
|
183
295
|
```
|
14
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -78,17 +78,17 @@
|
|
78
78
|
|
79
79
|
|
80
80
|
|
81
|
-
function kensaku(
|
81
|
+
function kensaku(e) {
|
82
82
|
|
83
83
|
//HTMLからうまく取得できなければ"undefined"を返す
|
84
84
|
|
85
|
-
if (
|
85
|
+
if (e === undefined)
|
86
86
|
|
87
87
|
{
|
88
88
|
|
89
|
-
|
89
|
+
e="undefined";
|
90
90
|
|
91
|
-
return
|
91
|
+
return e;
|
92
92
|
|
93
93
|
}
|
94
94
|
|
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
else{
|
98
98
|
|
99
|
-
var text =
|
99
|
+
var text = e;
|
100
100
|
|
101
101
|
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
102
102
|
|
13
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
Google apps Scriptで作成したフォームのテキストボックスに数値入力→入力された数値をスプレッドシートで検索→
|
1
|
+
Google apps Scriptで作成したフォームのテキストボックス2箇所に数値入力→入力された2つの数値を用いてスプレッドシートで複数条件で検索→検索ヒットしたセルの値をフォーム上に表示したい
|
test
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
### Google apps Scriptで作成したフォームのテキストボックスに数値入力→入力された数値をスプレッドシートで検索→隣にあるセルの値をフォームのテキストボックスの下に表示することは可能ですか?
|
2
|
-
|
3
|
-
|
4
|
-
|
5
1
|
【スプレッドシート】
|
6
2
|
|
7
3
|
A列からE列まで2000行のデータがあります。
|
@@ -62,7 +58,7 @@
|
|
62
58
|
|
63
59
|
【進捗】
|
64
60
|
|
65
|
-
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。
|
61
|
+
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。(検索実行時間の短縮などについてもご見解いただければ助かります)
|
66
62
|
|
67
63
|
ご教授いただければ助かります。
|
68
64
|
|
12
test
CHANGED
File without changes
|
test
CHANGED
@@ -158,7 +158,7 @@
|
|
158
158
|
|
159
159
|
|
160
160
|
|
161
|
-
<!--
|
161
|
+
<!--表示成功しました-->
|
162
162
|
|
163
163
|
<div id="output"></div>
|
164
164
|
|
11
進捗
test
CHANGED
File without changes
|
test
CHANGED
@@ -62,13 +62,9 @@
|
|
62
62
|
|
63
63
|
【進捗】
|
64
64
|
|
65
|
-
以下のコードで1つ目
|
65
|
+
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。
|
66
66
|
|
67
|
-
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
68
|
-
|
69
|
-
ボタン押すとoutputに反映されるまで6~7秒かかります。後は、検索ヒットしなかったときの処理くらいできれば。。
|
70
|
-
|
71
|
-
|
67
|
+
ご教授いただければ助かります。
|
72
68
|
|
73
69
|
|
74
70
|
|
@@ -120,9 +116,21 @@
|
|
120
116
|
|
121
117
|
});
|
122
118
|
|
119
|
+
try{
|
120
|
+
|
123
121
|
var seikou = loginData[0][1];
|
124
122
|
|
125
123
|
return seikou;
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
}catch(e){
|
128
|
+
|
129
|
+
seikou = "該当なし";
|
130
|
+
|
131
|
+
return seikou;
|
132
|
+
|
133
|
+
}
|
126
134
|
|
127
135
|
}
|
128
136
|
|
10
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -66,7 +66,7 @@
|
|
66
66
|
|
67
67
|
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
68
68
|
|
69
|
-
ボタン
|
69
|
+
ボタン押すとoutputに反映されるまで6~7秒かかります。後は、検索ヒットしなかったときの処理くらいできれば。。
|
70
70
|
|
71
71
|
ここがうまくけば2つ目もなんとか自己解決できそうです。。
|
72
72
|
|
9
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -166,7 +166,7 @@
|
|
166
166
|
|
167
167
|
function result(data) {
|
168
168
|
|
169
|
-
document.getElementById("output").innerHTML =
|
169
|
+
document.getElementById("output").innerHTML = data;
|
170
170
|
|
171
171
|
}
|
172
172
|
|
8
進捗
test
CHANGED
File without changes
|
test
CHANGED
@@ -60,7 +60,17 @@
|
|
60
60
|
|
61
61
|
|
62
62
|
|
63
|
+
【進捗】
|
64
|
+
|
63
|
-
以下のコードで1つ目に挑戦しています
|
65
|
+
以下のコードで1つ目に挑戦しています。取得できるとこまでいけました。しかし
|
66
|
+
|
67
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
68
|
+
|
69
|
+
ボタンを2回押しでないと表示できません。。
|
70
|
+
|
71
|
+
ここがうまくけば2つ目もなんとか自己解決できそうです。。
|
72
|
+
|
73
|
+
|
64
74
|
|
65
75
|
```Google apps script
|
66
76
|
|
@@ -154,9 +164,9 @@
|
|
154
164
|
|
155
165
|
google.script.run.withSuccessHandler(result).kensaku(a);
|
156
166
|
|
157
|
-
function result() {
|
167
|
+
function result(data) {
|
158
168
|
|
159
|
-
document.getElementById("output").innerHTML = <?= kensaku(); ?>;
|
169
|
+
document.getElementById("output").innerHTML = <?= kensaku(data); ?>;
|
160
170
|
|
161
171
|
}
|
162
172
|
|
7
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -152,7 +152,7 @@
|
|
152
152
|
|
153
153
|
var a= document.getElementById("input").value;
|
154
154
|
|
155
|
-
|
155
|
+
google.script.run.withSuccessHandler(result).kensaku(a);
|
156
156
|
|
157
157
|
function result() {
|
158
158
|
|
6
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -156,7 +156,7 @@
|
|
156
156
|
|
157
157
|
function result() {
|
158
158
|
|
159
|
-
document.getElementById("output
|
159
|
+
document.getElementById("output").innerHTML = <?= kensaku(); ?>;
|
160
160
|
|
161
161
|
}
|
162
162
|
|
5
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -152,11 +152,13 @@
|
|
152
152
|
|
153
153
|
var a= document.getElementById("input").value;
|
154
154
|
|
155
|
-
var b = google.script.run.withSuccessHandler(
|
155
|
+
var b = google.script.run.withSuccessHandler(result).kensaku(a);
|
156
156
|
|
157
|
-
|
157
|
+
function result() {
|
158
158
|
|
159
|
+
document.getElementById("output_bnk").innerHTML = <?= kensaku(); ?>;
|
160
|
+
|
159
|
-
}
|
161
|
+
}
|
160
162
|
|
161
163
|
</script>
|
162
164
|
|
4
誤字
test
CHANGED
File without changes
|
test
CHANGED
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
function doGet() {
|
72
72
|
|
73
|
-
return HtmlService.createTemplateFromFile('index')evaluate;
|
73
|
+
return HtmlService.createTemplateFromFile('index').evaluate;
|
74
74
|
|
75
75
|
}
|
76
76
|
|
3
修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -110,9 +110,9 @@
|
|
110
110
|
|
111
111
|
});
|
112
112
|
|
113
|
-
var
|
113
|
+
var seikou = loginData[0][1];
|
114
114
|
|
115
|
-
return
|
115
|
+
return seikou;
|
116
116
|
|
117
117
|
}
|
118
118
|
|
2
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -57,3 +57,111 @@
|
|
57
57
|
実際はC~E列は数万行あるのでかならずヒットするようになっています。
|
58
58
|
|
59
59
|
全2000行前提でご教授いただければ助かります。
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
以下のコードで1つ目に挑戦していますが、結果がmain.gsの”undefined”の方になりうまく取得できません。
|
64
|
+
|
65
|
+
```Google apps script
|
66
|
+
|
67
|
+
//main.gs
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
function doGet() {
|
72
|
+
|
73
|
+
return HtmlService.createTemplateFromFile('index')evaluate;
|
74
|
+
|
75
|
+
}
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
function kensaku(a) {
|
80
|
+
|
81
|
+
//HTMLからうまく取得できなければ"undefined"を返す
|
82
|
+
|
83
|
+
if (a === undefined)
|
84
|
+
|
85
|
+
{
|
86
|
+
|
87
|
+
a="undefined";
|
88
|
+
|
89
|
+
return a;
|
90
|
+
|
91
|
+
}
|
92
|
+
|
93
|
+
//HTMLからうまく取得できればスプレッドシートを検索し、検索結果を返す
|
94
|
+
|
95
|
+
else{
|
96
|
+
|
97
|
+
var text = a;
|
98
|
+
|
99
|
+
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
100
|
+
|
101
|
+
var range = datasheet.getRange("A:A").getValues();
|
102
|
+
|
103
|
+
var lastRow = range.filter(String).length;
|
104
|
+
|
105
|
+
var loginData = datasheet.getRange(1, 1, lastRow, 5).getValues(); //1~lastRow行目、5列分を二次元配列として取得
|
106
|
+
|
107
|
+
loginData = loginData.filter(function(v) {
|
108
|
+
|
109
|
+
return v[0] == text;
|
110
|
+
|
111
|
+
});
|
112
|
+
|
113
|
+
var bnkk = loginData[0][1];
|
114
|
+
|
115
|
+
return bnkk;
|
116
|
+
|
117
|
+
}
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
|
125
|
+
//index.html
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
//略
|
130
|
+
|
131
|
+
1つ目
|
132
|
+
|
133
|
+
<input type="number" id="input">
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
<!--このボタンを押すと下のスクリプト動作-->
|
138
|
+
|
139
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
<!--ここで表示するが、"undefined"が表示されてしまう。-->
|
144
|
+
|
145
|
+
<div id="output"></div>
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
<script>
|
150
|
+
|
151
|
+
function test() {
|
152
|
+
|
153
|
+
var a= document.getElementById("input").value;
|
154
|
+
|
155
|
+
var b = google.script.run.withSuccessHandler(a).kensaku();
|
156
|
+
|
157
|
+
document.getElementById("output").innerHTML = b;
|
158
|
+
|
159
|
+
}
|
160
|
+
|
161
|
+
</script>
|
162
|
+
|
163
|
+
//略
|
164
|
+
|
165
|
+
|
166
|
+
|
167
|
+
```
|
1
誤記
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,13 +10,13 @@
|
|
10
10
|
|
11
11
|
A列:2000行まで1~2000の数値が順に入力されています。
|
12
12
|
|
13
|
-
B列:2000行まで全てに
|
13
|
+
B列:2000行まで全てにバラバラの値が入っています。
|
14
14
|
|
15
15
|
C列:2000行まで1~2000の数値がランダムに入力されています。
|
16
16
|
|
17
17
|
D列:2000行まで1~2000の数値がランダムに入力されています。
|
18
18
|
|
19
|
-
E列:2000行まで全てに
|
19
|
+
E列:2000行まで全てにバラバラの値が入っています。
|
20
20
|
|
21
21
|
|
22
22
|
|