回答編集履歴
2
補足を追加
answer
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
なお、「フィルターで隠されていない範囲」には、1行目の見出しも含まれてしまうので、シートAの1行目に見出しがあるのであれば、filterの抽出条件に`i > 1`を加えて見出しを対象外にする必要があるでしょう。見出しがなくて1行目からデータが並んでいるなら`i > 1 &&`の部分は不要です。
|
6
6
|
|
7
|
+
修正: 自己解決したようですが、フィルターにマッチするデータがなかった場合の処理を追加します。
|
8
|
+
|
7
9
|
```GAS
|
8
10
|
function myFunction() {
|
9
11
|
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
@@ -12,6 +14,8 @@
|
|
12
14
|
var criteria = SpreadsheetApp.newFilterCriteria().whenTextContains('hoge2').build();
|
13
15
|
sheet.getFilter().setColumnFilterCriteria(sheet.getActiveRange().getColumn(), criteria);
|
14
16
|
var values = sheet.getDataRange().getValues().filter(function(_, i) {return i > 1 && !sheet.isRowHiddenByFilter(i + 1)})
|
17
|
+
if (values.length > 0) {
|
15
|
-
|
18
|
+
sheetT1.getRange(sheetT1.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
|
19
|
+
}
|
16
20
|
}
|
17
21
|
```
|
1
補足を追加
answer
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
`values.length`でvaluesの行数、`values[0].length`でvaluesの(1行目の)列数を取得できますから、getRange()にそれらを指定します。
|
4
4
|
|
5
|
-
なお、「フィルターで隠されていない範囲」には、1行目の見出し
|
5
|
+
なお、「フィルターで隠されていない範囲」には、1行目の見出しも含まれてしまうので、シートAの1行目に見出しがあるのであれば、filterの抽出条件に`i > 1`を加えて見出しを対象外にする必要があるでしょう。見出しがなくて1行目からデータが並んでいるなら`i > 1 &&`の部分は不要です。
|
6
6
|
|
7
7
|
```GAS
|
8
8
|
function myFunction() {
|