回答編集履歴
2
追記
test
CHANGED
@@ -79,3 +79,35 @@
|
|
79
79
|
シートが2000行の場合は
|
80
80
|
`var targetRange = targetSheet.getRange("G12:G");`
|
81
81
|
このデータ取得に時間がかかるみたいでpasteDataToMatchingDateHelperの単体での実行時間は2500msくらいになりました。
|
82
|
+
|
83
|
+
---
|
84
|
+
### 追記
|
85
|
+
G12:Gに関しては一定でコード内でも変化しないみたいですし、下記のように開始時に1回取得して関数に引数としてデータを渡すようにしてはどうでしょうか?
|
86
|
+
```JaveScript
|
87
|
+
function pasteDataToMatchingDate55() {
|
88
|
+
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
89
|
+
var targetSheet = ss.getActiveSheet();
|
90
|
+
var targetRange = targetSheet.getRange("G12:G");
|
91
|
+
var targetValues = targetRange.getValues();
|
92
|
+
var targetDates = targetValues.flat();
|
93
|
+
|
94
|
+
pasteDataToMatchingDateHelper("シート1", "W5", 9, 7, 9, targetSheet, targetDates);
|
95
|
+
pasteDataToMatchingDateHelper("シート1", "AL5", 24, 7, 24, targetSheet, targetDates);
|
96
|
+
pasteDataToMatchingDateHelper("シート1", "BP5", 54, 7, 54, targetSheet, targetDates);
|
97
|
+
pasteDataToMatchingDateHelper("シート1", "CE5", 69, 7, 69, targetSheet, targetDates);
|
98
|
+
pasteDataToMatchingDateHelper("シート1", "DI5", 99, 7, 99, targetSheet, targetDates);
|
99
|
+
|
100
|
+
}
|
101
|
+
|
102
|
+
function pasteDataToMatchingDateHelper(sheetName, dateCellRef, startCol, startRow, targetCol, targetSheet, targetDates) {
|
103
|
+
var ss = SpreadsheetApp.getActiveSpreadsheet();
|
104
|
+
var sourceSheet = ss.getSheetByName(sheetName);
|
105
|
+
var sourceRange = sourceSheet.getRange(startRow, startCol, 1, 15);
|
106
|
+
var dateCell = sourceSheet.getRange(dateCellRef);
|
107
|
+
var dateValue = dateCell.getValue();
|
108
|
+
|
109
|
+
var matchingIndex = targetDates.findIndex(function(date) {
|
110
|
+
return date instanceof Date && date.getTime() == dateValue.getTime();
|
111
|
+
});
|
112
|
+
|
113
|
+
```
|
1
追記
test
CHANGED
@@ -42,3 +42,40 @@
|
|
42
42
|
}
|
43
43
|
```
|
44
44
|
こちらを実行したらどのようなログが出力されますか?
|
45
|
+
|
46
|
+
---
|
47
|
+
当方で適当にシート(行は1001行、列はDIまで、1001行目は12行目~1000行目の合計行)を作成し、上記のコードを動作させたところ
|
48
|
+
> お知らせ 実行開始
|
49
|
+
> 情報 データ領域 = A1:DI1001
|
50
|
+
> 情報 sourceRange = I7:W7 : dateCell = W5 : targetDates = 990
|
51
|
+
> デバッグ 日付検索時間: 3ms
|
52
|
+
> デバッグ データコピー時間: 118ms
|
53
|
+
> デバッグ 単体実行時間: 1104ms
|
54
|
+
> 情報 データ領域 = A1:DI1001
|
55
|
+
> 情報 sourceRange = X7:AL7 : dateCell = AL5 : targetDates = 990
|
56
|
+
> デバッグ 日付検索時間: 2ms
|
57
|
+
> デバッグ データコピー時間: 139ms
|
58
|
+
> デバッグ 単体実行時間: 1110ms
|
59
|
+
> 情報 データ領域 = A1:DI1001
|
60
|
+
> 情報 sourceRange = BB7:BP7 : dateCell = BP5 : targetDates = 990
|
61
|
+
> デバッグ 日付検索時間: 1ms
|
62
|
+
> デバッグ データコピー時間: 100ms
|
63
|
+
> デバッグ 単体実行時間: 1299ms
|
64
|
+
> 情報 データ領域 = A1:DI1001
|
65
|
+
> 情報 sourceRange = BQ7:CE7 : dateCell = CE5 : targetDates = 990
|
66
|
+
> デバッグ 日付検索時間: 2ms
|
67
|
+
> デバッグ データコピー時間: 102ms
|
68
|
+
> デバッグ 単体実行時間: 970ms
|
69
|
+
> 情報 データ領域 = A1:DI1001
|
70
|
+
> 情報 sourceRange = CU7:DI7 : dateCell = DI5 : targetDates = 990
|
71
|
+
> デバッグ 日付検索時間: 1ms
|
72
|
+
> デバッグ データコピー時間: 64ms
|
73
|
+
> デバッグ 単体実行時間: 839ms
|
74
|
+
> デバッグ 全体実行時間: 5335ms
|
75
|
+
> お知らせ 実行完了
|
76
|
+
|
77
|
+
といった感じで
|
78
|
+
pasteDataToMatchingDateHelperの単体での実行時間は大体800ms~1300ms、処理全体で約5500msといった感じになっています。
|
79
|
+
シートが2000行の場合は
|
80
|
+
`var targetRange = targetSheet.getRange("G12:G");`
|
81
|
+
このデータ取得に時間がかかるみたいでpasteDataToMatchingDateHelperの単体での実行時間は2500msくらいになりました。
|