teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

20

修正

2020/06/21 06:25

投稿

MasakiTM
MasakiTM

スコア115

title CHANGED
@@ -1,1 +1,1 @@
1
- Google apps Scriptで作成したテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をフォーム上に表示したい
1
+ Google apps Scriptで作成のHTMLテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に数値2で絞り込み行検索→検索行の値をHTML上に表示したい
body CHANGED
File without changes

19

修正

2020/06/21 06:25

投稿

MasakiTM
MasakiTM

スコア115

title CHANGED
@@ -1,1 +1,1 @@
1
- Google apps Scriptで作成したフォームのテキストボックス2箇所に数値入力→入力された2つの数値を用いてスプレッドシートで複条件で検索→検索ヒットしたセルの値をフォーム上に表示したい
1
+ Google apps Scriptで作成したテキストボックス2箇所に数値入力(数値1,数値2)→数値1でスプレッドシートの行検索→更に値2絞り込み行検索→検索の値をフォーム上に表示したい
body CHANGED
File without changes

18

修正

2020/06/21 06:22

投稿

MasakiTM
MasakiTM

スコア115

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

修正

2020/06/21 05:53

投稿

MasakiTM
MasakiTM

スコア115

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

修正

2020/06/21 05:52

投稿

MasakiTM
MasakiTM

スコア115

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

追加

2020/06/21 05:51

投稿

MasakiTM
MasakiTM

スコア115

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

修正

2020/06/21 05:50

投稿

MasakiTM
MasakiTM

スコア115

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(a) {
41
+ function kensaku(e) {
42
42
  //HTMLからうまく取得できなければ"undefined"を返す
43
- if (a === undefined)
43
+ if (e === undefined)
44
44
  {
45
- a="undefined";
45
+ e="undefined";
46
- return a;
46
+ return e;
47
47
  }
48
48
  //HTMLからうまく取得できればスプレッドシートを検索し、検索結果を返す
49
49
  else{
50
- var text = a;
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

2020/06/21 04:28

投稿

MasakiTM
MasakiTM

スコア115

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

2020/06/21 04:02

投稿

MasakiTM
MasakiTM

スコア115

title CHANGED
File without changes
body CHANGED
@@ -78,7 +78,7 @@
78
78
  <!--このボタンを押すと下のスクリプト動作-->
79
79
  <input type="button" onclick="test()" value="ここを押すとアウトプット">
80
80
 
81
- <!--ここで表示するが、"undefined"が表示されてしまう。-->
81
+ <!--表示成功しました-->
82
82
  <div id="output"></div>
83
83
 
84
84
  <script>

11

進捗

2020/06/21 03:52

投稿

MasakiTM
MasakiTM

スコア115

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
- ここがうまくけば2つ目もなんと自己解決できそうです。
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

修正

2020/06/21 02:15

投稿

MasakiTM
MasakiTM

スコア115

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
- ボタンを2回でな表示できません。。
35
+ ボタン押すとoutputに反映されるま6~7秒かかります。後は、検索ヒットしかったきの処理くらいできれば。。
36
36
  ここがうまくけば2つ目もなんとか自己解決できそうです。。
37
37
 
38
38
  ```Google apps script

9

修正

2020/06/21 01:28

投稿

MasakiTM
MasakiTM

スコア115

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 = <?= kensaku(data); ?>;
85
+ document.getElementById("output").innerHTML = data;
86
86
  }
87
87
  </script>
88
88
  //略

8

進捗

2020/06/21 01:21

投稿

MasakiTM
MasakiTM

スコア115

title CHANGED
File without changes
body CHANGED
@@ -29,7 +29,12 @@
29
29
    実際はC~E列は数万行あるのでかならずヒットするようになっています。
30
30
    全2000行前提でご教授いただければ助かります。
31
31
 
32
+ 【進捗】
32
- 以下のコードで1つ目に挑戦していますが、結果がmain.gsの”undefined”の方になりうまく取得できません
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

修正

2020/06/21 01:15

投稿

MasakiTM
MasakiTM

スコア115

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
- var b = google.script.run.withSuccessHandler(result).kensaku(a);
78
+ google.script.run.withSuccessHandler(result).kensaku(a);
79
79
  function result() {
80
80
  document.getElementById("output").innerHTML = <?= kensaku(); ?>;
81
81
  }

6

修正

2020/06/20 18:59

投稿

MasakiTM
MasakiTM

スコア115

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("output_bnk").innerHTML = <?= kensaku(); ?>;
80
+ document.getElementById("output").innerHTML = <?= kensaku(); ?>;
81
81
  }
82
82
  </script>
83
83
  //略

5

修正

2020/06/20 18:55

投稿

MasakiTM
MasakiTM

スコア115

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(a).kensaku();
78
+ var b = google.script.run.withSuccessHandler(result).kensaku(a);
79
+ function result() {
79
- document.getElementById("output").innerHTML = b;
80
+ document.getElementById("output_bnk").innerHTML = <?= kensaku(); ?>;
80
- }
81
+ }
81
82
  </script>
82
83
  //略
83
84
 

4

誤字

2020/06/20 18:54

投稿

MasakiTM
MasakiTM

スコア115

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

修正

2020/06/20 17:36

投稿

MasakiTM
MasakiTM

スコア115

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 bnkk = loginData[0][1];
57
+ var seikou = loginData[0][1];
58
- return bnkk;
58
+ return seikou;
59
59
  }
60
60
  }
61
61
 

2

追加

2020/06/20 17:30

投稿

MasakiTM
MasakiTM

スコア115

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

誤記

2020/06/20 17:29

投稿

MasakiTM
MasakiTM

スコア115

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()で別途作成したフォームを表示させます。