質問編集履歴
20
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Google apps Scriptで作成
|
1
|
+
Google apps Scriptで作成のHTMLテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をHTML上に表示したい
|
body
CHANGED
File without changes
|
19
修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Google apps Scriptで作成した
|
1
|
+
Google apps Scriptで作成したテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をフォーム上に表示したい
|
body
CHANGED
File without changes
|
18
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,6 +32,7 @@
|
|
32
32
|
ご教授いただければ助かります。
|
33
33
|
|
34
34
|
```Google apps script
|
35
|
+
【1つ目のコード】**正常に動作します。**
|
35
36
|
//main.gs
|
36
37
|
|
37
38
|
function doGet() {
|
17
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -93,6 +93,10 @@
|
|
93
93
|
【2つ目のコード】とりあえずここまでできてます。。
|
94
94
|
|
95
95
|
//main.gs
|
96
|
+
function doGet() {
|
97
|
+
return HtmlService.createTemplateFromFile('index').evaluate;
|
98
|
+
}
|
99
|
+
|
96
100
|
function kensakus(a,b) {
|
97
101
|
if (a=== undefined)
|
98
102
|
{
|
16
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
}
|
89
89
|
</script>
|
90
90
|
//略
|
91
|
-
|
91
|
+
```
|
92
92
|
``````google apps script
|
93
93
|
【2つ目のコード】とりあえずここまでできてます。。
|
94
94
|
|
15
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -89,4 +89,60 @@
|
|
89
89
|
</script>
|
90
90
|
//略
|
91
91
|
|
92
|
+
``````google apps script
|
93
|
+
【2つ目のコード】とりあえずここまでできてます。。
|
94
|
+
|
95
|
+
//main.gs
|
96
|
+
function kensakus(a,b) {
|
97
|
+
if (a=== undefined)
|
98
|
+
{
|
99
|
+
b="undefined";
|
100
|
+
return b;
|
101
|
+
}
|
102
|
+
else if (b=== undefined)
|
103
|
+
{
|
104
|
+
b="undefined";
|
105
|
+
return b;
|
106
|
+
}
|
107
|
+
else{
|
108
|
+
var texta = a;
|
109
|
+
var textb = b;
|
110
|
+
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
111
|
+
var range = datasheet.getRange("C:C").getValues(); //一番長いC列の最終行取得
|
112
|
+
var lastRow = range.filter(String).length;
|
113
|
+
var loginData = datasheet.getRange(1, 3, lastRow, 5).getValues(); //1~lastRow行目、3~5列分を二次元配列として取得
|
114
|
+
loginData = loginData.filter(
|
115
|
+
function(v) {return v[?] == ??;} ** //ここの検索方法がわかりません。**
|
116
|
+
);
|
117
|
+
try{
|
118
|
+
var seikou = loginData[?][?]; **//どう記述したらいいのかわかりません。**
|
119
|
+
return seikou;
|
120
|
+
}catch(e){
|
121
|
+
seikou = "該当なし";
|
122
|
+
return seikou;
|
123
|
+
}
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
//index.html
|
128
|
+
//略
|
129
|
+
2つのテキストボックス
|
130
|
+
<input type="number" id="input">
|
131
|
+
<input type="number" id="inputs">
|
132
|
+
|
133
|
+
<!--このボタンを押すと下のスクリプト動作-->
|
134
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">
|
135
|
+
|
136
|
+
<!--ここで検索結果表示したい。-->
|
137
|
+
<div id="outputs"></div>
|
138
|
+
<script>
|
139
|
+
function test() {
|
140
|
+
var a= document.getElementById("input").value;
|
141
|
+
var b= document.getElementById("inputs").value;
|
142
|
+
google.script.run.withSuccessHandler(results).kensakus(a,b);
|
143
|
+
function results(data) {
|
144
|
+
document.getElementById("outputs").innerHTML = data;
|
145
|
+
}
|
146
|
+
</script>
|
147
|
+
//略
|
92
148
|
```
|
14
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -38,16 +38,16 @@
|
|
38
38
|
return HtmlService.createTemplateFromFile('index').evaluate;
|
39
39
|
}
|
40
40
|
|
41
|
-
function kensaku(
|
41
|
+
function kensaku(e) {
|
42
42
|
//HTMLからうまく取得できなければ"undefined"を返す
|
43
|
-
if (
|
43
|
+
if (e === undefined)
|
44
44
|
{
|
45
|
-
|
45
|
+
e="undefined";
|
46
|
-
return
|
46
|
+
return e;
|
47
47
|
}
|
48
48
|
//HTMLからうまく取得できればスプレッドシートを検索し、検索結果を返す
|
49
49
|
else{
|
50
|
-
var text =
|
50
|
+
var text = e;
|
51
51
|
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
52
52
|
var range = datasheet.getRange("A:A").getValues();
|
53
53
|
var lastRow = range.filter(String).length;
|
13
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Google apps Scriptで作成したフォームのテキストボックスに数値入力→入力された数値をスプレッドシートで検索→
|
1
|
+
Google apps Scriptで作成したフォームのテキストボックス2箇所に数値入力→入力された2つの数値を用いてスプレッドシートで複数条件で検索→検索ヒットしたセルの値をフォーム上に表示したい
|
body
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
### Google apps Scriptで作成したフォームのテキストボックスに数値入力→入力された数値をスプレッドシートで検索→隣にあるセルの値をフォームのテキストボックスの下に表示することは可能ですか?
|
2
|
-
|
3
1
|
【スプレッドシート】
|
4
2
|
A列からE列まで2000行のデータがあります。
|
5
3
|
|
@@ -30,7 +28,7 @@
|
|
30
28
|
全2000行前提でご教授いただければ助かります。
|
31
29
|
|
32
30
|
【進捗】
|
33
|
-
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。
|
31
|
+
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。(検索実行時間の短縮などについてもご見解いただければ助かります)
|
34
32
|
ご教授いただければ助かります。
|
35
33
|
|
36
34
|
```Google apps script
|
12
title
CHANGED
File without changes
|
body
CHANGED
@@ -78,7 +78,7 @@
|
|
78
78
|
<!--このボタンを押すと下のスクリプト動作-->
|
79
79
|
<input type="button" onclick="test()" value="ここを押すとアウトプット">
|
80
80
|
|
81
|
-
<!--
|
81
|
+
<!--表示成功しました-->
|
82
82
|
<div id="output"></div>
|
83
83
|
|
84
84
|
<script>
|
11
進捗
title
CHANGED
File without changes
|
body
CHANGED
@@ -30,10 +30,8 @@
|
|
30
30
|
全2000行前提でご教授いただければ助かります。
|
31
31
|
|
32
32
|
【進捗】
|
33
|
-
以下のコードで1つ目
|
33
|
+
以下のコードで上記1つ目のやりたいことは達成できました。2つ目の検索方法がわからない状態です。
|
34
|
-
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
35
|
-
ボタン押すとoutputに反映されるまで6~7秒かかります。後は、検索ヒットしなかったときの処理くらいできれば。。
|
36
|
-
|
34
|
+
ご教授いただければ助かります。
|
37
35
|
|
38
36
|
```Google apps script
|
39
37
|
//main.gs
|
@@ -59,8 +57,14 @@
|
|
59
57
|
loginData = loginData.filter(function(v) {
|
60
58
|
return v[0] == text;
|
61
59
|
});
|
60
|
+
try{
|
62
61
|
var seikou = loginData[0][1];
|
63
62
|
return seikou;
|
63
|
+
|
64
|
+
}catch(e){
|
65
|
+
seikou = "該当なし";
|
66
|
+
return seikou;
|
67
|
+
}
|
64
68
|
}
|
65
69
|
}
|
66
70
|
|
10
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
【進捗】
|
33
33
|
以下のコードで1つ目に挑戦しています。取得できるとこまでいけました。しかし
|
34
34
|
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
35
|
-
ボタン
|
35
|
+
ボタン押すとoutputに反映されるまで6~7秒かかります。後は、検索ヒットしなかったときの処理くらいできれば。。
|
36
36
|
ここがうまくけば2つ目もなんとか自己解決できそうです。。
|
37
37
|
|
38
38
|
```Google apps script
|
9
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,7 +82,7 @@
|
|
82
82
|
var a= document.getElementById("input").value;
|
83
83
|
google.script.run.withSuccessHandler(result).kensaku(a);
|
84
84
|
function result(data) {
|
85
|
-
document.getElementById("output").innerHTML =
|
85
|
+
document.getElementById("output").innerHTML = data;
|
86
86
|
}
|
87
87
|
</script>
|
88
88
|
//略
|
8
進捗
title
CHANGED
File without changes
|
body
CHANGED
@@ -29,7 +29,12 @@
|
|
29
29
|
実際はC~E列は数万行あるのでかならずヒットするようになっています。
|
30
30
|
全2000行前提でご教授いただければ助かります。
|
31
31
|
|
32
|
+
【進捗】
|
32
|
-
以下のコードで1つ目に挑戦しています
|
33
|
+
以下のコードで1つ目に挑戦しています。取得できるとこまでいけました。しかし
|
34
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">の
|
35
|
+
ボタンを2回押しでないと表示できません。。
|
36
|
+
ここがうまくけば2つ目もなんとか自己解決できそうです。。
|
37
|
+
|
33
38
|
```Google apps script
|
34
39
|
//main.gs
|
35
40
|
|
@@ -76,8 +81,8 @@
|
|
76
81
|
function test() {
|
77
82
|
var a= document.getElementById("input").value;
|
78
83
|
google.script.run.withSuccessHandler(result).kensaku(a);
|
79
|
-
function result() {
|
84
|
+
function result(data) {
|
80
|
-
document.getElementById("output").innerHTML = <?= kensaku(); ?>;
|
85
|
+
document.getElementById("output").innerHTML = <?= kensaku(data); ?>;
|
81
86
|
}
|
82
87
|
</script>
|
83
88
|
//略
|
7
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -75,7 +75,7 @@
|
|
75
75
|
<script>
|
76
76
|
function test() {
|
77
77
|
var a= document.getElementById("input").value;
|
78
|
-
|
78
|
+
google.script.run.withSuccessHandler(result).kensaku(a);
|
79
79
|
function result() {
|
80
80
|
document.getElementById("output").innerHTML = <?= kensaku(); ?>;
|
81
81
|
}
|
6
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -77,7 +77,7 @@
|
|
77
77
|
var a= document.getElementById("input").value;
|
78
78
|
var b = google.script.run.withSuccessHandler(result).kensaku(a);
|
79
79
|
function result() {
|
80
|
-
document.getElementById("
|
80
|
+
document.getElementById("output").innerHTML = <?= kensaku(); ?>;
|
81
81
|
}
|
82
82
|
</script>
|
83
83
|
//略
|
5
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -75,9 +75,10 @@
|
|
75
75
|
<script>
|
76
76
|
function test() {
|
77
77
|
var a= document.getElementById("input").value;
|
78
|
-
var b = google.script.run.withSuccessHandler(
|
78
|
+
var b = google.script.run.withSuccessHandler(result).kensaku(a);
|
79
|
+
function result() {
|
79
|
-
document.getElementById("
|
80
|
+
document.getElementById("output_bnk").innerHTML = <?= kensaku(); ?>;
|
80
|
-
}
|
81
|
+
}
|
81
82
|
</script>
|
82
83
|
//略
|
83
84
|
|
4
誤字
title
CHANGED
File without changes
|
body
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
//main.gs
|
35
35
|
|
36
36
|
function doGet() {
|
37
|
-
return HtmlService.createTemplateFromFile('index')evaluate;
|
37
|
+
return HtmlService.createTemplateFromFile('index').evaluate;
|
38
38
|
}
|
39
39
|
|
40
40
|
function kensaku(a) {
|
3
修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -54,8 +54,8 @@
|
|
54
54
|
loginData = loginData.filter(function(v) {
|
55
55
|
return v[0] == text;
|
56
56
|
});
|
57
|
-
var
|
57
|
+
var seikou = loginData[0][1];
|
58
|
-
return
|
58
|
+
return seikou;
|
59
59
|
}
|
60
60
|
}
|
61
61
|
|
2
追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,4 +27,58 @@
|
|
27
27
|
|
28
28
|
※(2つ目)について、C列D列の数値がランダムなら検索ヒット確率低くないか?と思われるかもしれませんが
|
29
29
|
実際はC~E列は数万行あるのでかならずヒットするようになっています。
|
30
|
-
全2000行前提でご教授いただければ助かります。
|
30
|
+
全2000行前提でご教授いただければ助かります。
|
31
|
+
|
32
|
+
以下のコードで1つ目に挑戦していますが、結果がmain.gsの”undefined”の方になりうまく取得できません。
|
33
|
+
```Google apps script
|
34
|
+
//main.gs
|
35
|
+
|
36
|
+
function doGet() {
|
37
|
+
return HtmlService.createTemplateFromFile('index')evaluate;
|
38
|
+
}
|
39
|
+
|
40
|
+
function kensaku(a) {
|
41
|
+
//HTMLからうまく取得できなければ"undefined"を返す
|
42
|
+
if (a === undefined)
|
43
|
+
{
|
44
|
+
a="undefined";
|
45
|
+
return a;
|
46
|
+
}
|
47
|
+
//HTMLからうまく取得できればスプレッドシートを検索し、検索結果を返す
|
48
|
+
else{
|
49
|
+
var text = a;
|
50
|
+
var datasheet = SpreadsheetApp.openById("スプレッドシートのID").getSheetByName("シート名");
|
51
|
+
var range = datasheet.getRange("A:A").getValues();
|
52
|
+
var lastRow = range.filter(String).length;
|
53
|
+
var loginData = datasheet.getRange(1, 1, lastRow, 5).getValues(); //1~lastRow行目、5列分を二次元配列として取得
|
54
|
+
loginData = loginData.filter(function(v) {
|
55
|
+
return v[0] == text;
|
56
|
+
});
|
57
|
+
var bnkk = loginData[0][1];
|
58
|
+
return bnkk;
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
|
63
|
+
//index.html
|
64
|
+
|
65
|
+
//略
|
66
|
+
1つ目
|
67
|
+
<input type="number" id="input">
|
68
|
+
|
69
|
+
<!--このボタンを押すと下のスクリプト動作-->
|
70
|
+
<input type="button" onclick="test()" value="ここを押すとアウトプット">
|
71
|
+
|
72
|
+
<!--ここで表示するが、"undefined"が表示されてしまう。-->
|
73
|
+
<div id="output"></div>
|
74
|
+
|
75
|
+
<script>
|
76
|
+
function test() {
|
77
|
+
var a= document.getElementById("input").value;
|
78
|
+
var b = google.script.run.withSuccessHandler(a).kensaku();
|
79
|
+
document.getElementById("output").innerHTML = b;
|
80
|
+
}
|
81
|
+
</script>
|
82
|
+
//略
|
83
|
+
|
84
|
+
```
|
1
誤記
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,10 +4,10 @@
|
|
4
4
|
A列からE列まで2000行のデータがあります。
|
5
5
|
|
6
6
|
A列:2000行まで1~2000の数値が順に入力されています。
|
7
|
-
B列:2000行まで全てに
|
7
|
+
B列:2000行まで全てにバラバラの値が入っています。
|
8
8
|
C列:2000行まで1~2000の数値がランダムに入力されています。
|
9
9
|
D列:2000行まで1~2000の数値がランダムに入力されています。
|
10
|
-
E列:2000行まで全てに
|
10
|
+
E列:2000行まで全てにバラバラの値が入っています。
|
11
11
|
|
12
12
|
(フォーム表示)
|
13
13
|
1.Google apps ScriptにアクセスしdoGet()で別途作成したフォームを表示させます。
|