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

回答編集履歴

3

あほだった

2018/08/03 14:22

投稿

papinianus
papinianus

スコア12705

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] != '2');
14
+ return (element[0] == '2');
15
15
  })
16
16
  .sort(compareDateLikeStr); // 日付を文字列じゃなくて色々と考えて降順ソート
17
17
 

2

不親切なのを直す

2018/08/03 14:22

投稿

papinianus
papinianus

スコア12705

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 + 3);
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

蛇足

2018/08/02 07:40

投稿

papinianus
papinianus

スコア12705

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でできるかは未調査)