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

回答編集履歴

1

修正

2021/05/19 04:33

投稿

Tatsunosuke
Tatsunosuke

スコア599

answer CHANGED
@@ -1,3 +1,79 @@
1
+ 書いてみました!
2
+
3
+ [検索]と[結果]の名前のシートの作成お願いします。
4
+ 検索シートの配列はこれ↓
5
+ ![イメージ説明](82239c857f6b445f3418c58fa07ab8d6.png)
6
+
7
+ これで検索値を入れて実行していただければ、
8
+ 結果シートに出力されると思います。
9
+
10
+ 200シートとなるとちょっと時間がかかるかも知れません。
11
+
12
+ ```gas
13
+
14
+ function myfunc() {
15
+
16
+ var ss = SpreadsheetApp.openById('***'); //[todo]スプレッドシートのID
17
+ var sheetList =ss.getSheets() // 全シートの取得
18
+
19
+ //検索用のシート
20
+ var searchSheet = ss.getSheetByName('検索');
21
+  var search = searchSheet.getDataRange().getValues()
22
+ //検索値の並び替え
23
+  var searchTrans = []
24
+ search.forEach(e=>{
25
+ if(e[0]!="検索したい数字"){
26
+ searchTrans.push(e[0])
27
+ }
28
+ })
29
+
30
+  
31
+ //結果入れる用の連想配列
32
+ var results = {}
33
+  
34
+  //シートを一つ一つ確認
35
+ for(var sheet of sheetList){
36
+
37
+ //検索シートと結果シートを除外
38
+ if(sheet.getSheetName()!="検索"&&sheet.getSheetName()!="結果"){
39
+
40
+ //全データを取得
41
+ var values = sheet.getDataRange().getValues()
42
+ values.forEach(e=>{
43
+      
44
+      //検索したい単語があるかチェック
45
+ var index = searchTrans.indexOf(e[0])
46
+ if(index != -1 ){
47
+ if(!results[e[0]]){
48
+ results[e[0]] = []
49
+ }
50
+ results[e[0]].push([e[1],sheet.getSheetName()])
51
+ }
52
+
53
+ })
54
+ }
55
+ }
56
+
57
+ //検索結果を貼り付けられる形式に変換
58
+ var setValues = [["検索単語","単語","シート名"]]
59
+ for(var word in results){
60
+ setValues.push([word,"",""])
61
+ results[word].forEach(e =>{
62
+ setValues.push(["",e[0],e[1]])
63
+ })
64
+ }
65
+   
66
+   //結果シートへ貼り付け
67
+ var setSheet = ss.getSheetByName('結果');
68
+ setSheet.clear()
69
+ setSheet.getRange(1,1,setValues.length,setValues[0].length).setValues(setValues)
70
+
71
+ }
72
+
73
+
74
+ ```
75
+
76
+ ---
1
77
  ちょっと僕の理解がずれているかもしれませんが、
2
78
 
3
79
  検索する数字の入った[検索シート]と