回答編集履歴
3
あほだった
answer
CHANGED
@@ -11,7 +11,7 @@
|
|
11
11
|
return element.getName();
|
12
12
|
})
|
13
13
|
.filter(function(element, index, array) { //2ではじまる名前だけにする
|
14
|
-
return (element[0]
|
14
|
+
return (element[0] == '2');
|
15
15
|
})
|
16
16
|
.sort(compareDateLikeStr); // 日付を文字列じゃなくて色々と考えて降順ソート
|
17
17
|
|
2
不親切なのを直す
answer
CHANGED
@@ -3,27 +3,33 @@
|
|
3
3
|
適切なシート名のテストデータを用意するのがつらいのでテストしてません。
|
4
4
|
|
5
5
|
```javascript
|
6
|
+
// このスプレッドシートをソートしてくれるやつ
|
6
7
|
function sortSheets() {
|
7
8
|
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
|
8
|
-
var sheetNames = spreadsheet.getSheets()
|
9
|
+
var sheetNames = spreadsheet.getSheets() //シート名の配列を得る
|
9
|
-
.map(function(element, index, array) {
|
10
|
+
.map(function(element, index, array) { //名前だけにする
|
10
11
|
return element.getName();
|
11
12
|
})
|
12
|
-
.filter(function(element, index, array) {
|
13
|
+
.filter(function(element, index, array) { //2ではじまる名前だけにする
|
13
14
|
return (element[0] != '2');
|
14
15
|
})
|
15
|
-
.sort(compareDateLikeStr);
|
16
|
+
.sort(compareDateLikeStr); // 日付を文字列じゃなくて色々と考えて降順ソート
|
17
|
+
|
16
|
-
for(var i = 0; i < sheetNames.length; i++) {
|
18
|
+
for(var i = 0; i < sheetNames.length; i++) { // シート名がソート済みなので、一つずつ移動させる
|
17
19
|
var cur = spreadsheet.getSheetByName(sheetNames[i]);
|
18
20
|
cur.activate();
|
19
|
-
spreadsheet.moveActiveSheet(i +
|
21
|
+
spreadsheet.moveActiveSheet(i + 4);
|
20
22
|
}
|
21
23
|
}
|
24
|
+
|
22
|
-
function sortTest() {
|
25
|
+
function sortTest() { //テスト用
|
23
|
-
var t = ["2018.1.1", "2018.1.11", "2017.1.11"];
|
26
|
+
var t = ["2018.1.1", "2018.1.11", "2017.1.11"]; //実際のシート名を入れてみてソートされるか確認してください
|
24
27
|
t.sort(compareDateLikeStr);
|
25
|
-
Logger.log(t);
|
28
|
+
Logger.log(t); // 結果として、並んでいるかログで見てください
|
26
29
|
}
|
30
|
+
|
31
|
+
// 日付っぽい文字列をソート(降順)
|
32
|
+
// .で3つに区切れるはずなので、それを数値化して、年>月>日で比較する。
|
27
33
|
function compareDateLikeStr(a, b) {
|
28
34
|
var aYMD = a.split('.').map(function(element, index, array) { return Number(element);});
|
29
35
|
var bYMD = b.split('.').map(function(element, index, array) { return Number(element);});
|
@@ -42,5 +48,5 @@
|
|
42
48
|
|
43
49
|
--蛇足
|
44
50
|
今からは困難でしょうが、将来の参考として
|
45
|
-
0. 2018.07.31, 2018.08.01となっているとソートが非常に楽です。
|
51
|
+
0. 2018.07.31, 2018.08.01となっているとソートが非常に楽です。//compareなんちゃらが不要になる
|
46
52
|
0. テンプレートからのコピーが完全手動でなくていいなら、コピー時に思った場所にインサートするのがいいのかなーと妄想しました(そういうコピーがGASでできるかは未調査)
|
1
蛇足
answer
CHANGED
@@ -38,4 +38,9 @@
|
|
38
38
|
if(aYMD[2] < bYMD[2]) return 1;
|
39
39
|
return 0;
|
40
40
|
}
|
41
|
-
```
|
41
|
+
```
|
42
|
+
|
43
|
+
--蛇足
|
44
|
+
今からは困難でしょうが、将来の参考として
|
45
|
+
0. 2018.07.31, 2018.08.01となっているとソートが非常に楽です。
|
46
|
+
0. テンプレートからのコピーが完全手動でなくていいなら、コピー時に思った場所にインサートするのがいいのかなーと妄想しました(そういうコピーがGASでできるかは未調査)
|