回答編集履歴

3

a

2019/05/22 12:59

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  const folderName = '翻訳元_未コピー';
10
10
 
11
- pickSpreadsheetInFolderNamed(folderName).forEach(function (e) { copyAll(dest, e); });
11
+ pickSpreadsheetInFolderNamed(folderName).forEach(function (e) { copyAll(dest, SpreadsheetApp.open(e)); });
12
12
 
13
13
  resetSheetIndexSheet(dest, sheetName);
14
14
 

2

2019/05/22 12:59

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -68,9 +68,11 @@
68
68
 
69
69
  sheet.clear();
70
70
 
71
- const dat = spreadsheet.getSheets().map(function (e) { return [e.getSheetName(), e.getSheetId()]; }).filter(function (e) { return e[0] !== sheetName; });
71
+ //const dat = spreadsheet.getSheets().map(function (e) { return [e.getSheetName(), e.getSheetId()]; }).filter(function (e) { return e[0] !== sheetName; });
72
72
 
73
+ const dat = spreadsheet.getSheets().map(function (e) { return [e.getSheetName(),]; }).filter(function (e) { return e[0] !== sheetName; });
74
+
73
- sheet.getRange(1, 1, dat.length, 2).setValues(dat);
75
+ sheet.getRange(1, 1, dat.length, dat[0].length).setValues(dat);
74
76
 
75
77
  }
76
78
 

1

2019/05/21 04:19

投稿

papinianus
papinianus

スコア12705

test CHANGED
@@ -1,36 +1,76 @@
1
1
  ```javascript
2
2
 
3
- function q189933() {
3
+ function procedure() {
4
4
 
5
- const destination = SpreadsheetApp.openById('コピー先ID');
5
+ const dest = SpreadsheetApp.openById('コピー先ID');
6
6
 
7
- SpreadsheetApp.openById('元のファイルID').getSheets().forEach(
7
+ const sheetName = 'シート一覧';
8
8
 
9
- function(e) {
9
+ const folderName = '翻訳元_未コピー';
10
10
 
11
+ pickSpreadsheetInFolderNamed(folderName).forEach(function (e) { copyAll(dest, e); });
12
+
13
+ resetSheetIndexSheet(dest, sheetName);
14
+
15
+ }
16
+
17
+ function pickSpreadsheetInFolderNamed(name) {
18
+
19
+ var files = [];
20
+
21
+ const folderIter = DriveApp.getFoldersByName(name);
22
+
23
+ while (folderIter.hasNext()) {
24
+
25
+ var folder = folderIter.next();
26
+
27
+ var fileIter = folder.getFilesByType('application/vnd.google-apps.spreadsheet');
28
+
29
+ while (fileIter.hasNext()) {
30
+
11
- e.copyTo(destination);
31
+ files.push(fileIter.next());
32
+
33
+ }
12
34
 
13
35
  }
14
36
 
15
- );
37
+ return files;
16
38
 
17
39
  }
18
40
 
19
- function q189933_() {
41
+ function copyAll(destSpreadsheet, sourceSpreadsheet) {
20
42
 
43
+ sourceSpreadsheet.getSheets().forEach(
44
+
45
+ function (e) {
46
+
21
- SpreadsheetApp.openById('コピー先ID').insertSheet('Sheet List', 0);
47
+ e.copyTo(destSpreadsheet).setName(e.getName());
48
+
49
+ }
50
+
51
+ );
22
52
 
23
53
  }
24
54
 
25
- function q189933__() {
55
+ function upsertSheet(spreadsheet, sheetName) {
26
56
 
27
- const sheet = SpreadsheetApp.openById('コピー先ID').getSheetByName('Sheet List');
57
+ const sheet = spreadsheet.getSheetByName(sheetName);
28
58
 
29
- sheet.clear();
59
+ if (sheet !== null) { return sheet; }
30
60
 
31
- const dat = SpreadsheetApp.openById('コピー先ID').getSheets().map(function(e){return [e.getSheetName(), e.getSheetId()];}).filter(function(e){return e[0] !== 'Sheet List';});
61
+ return spreadsheet.insertSheet(sheetName, 0); //0が挿入位置を示しており、先頭。移動の必要はないと考えた(https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#insertSheet(String,Integer))
32
62
 
63
+ }
64
+
65
+ function resetSheetIndexSheet(spreadsheet, sheetName) {
66
+
67
+ const sheet = upsertSheet(spreadsheet, sheetName);
68
+
69
+ sheet.clear();
70
+
71
+ const dat = spreadsheet.getSheets().map(function (e) { return [e.getSheetName(), e.getSheetId()]; }).filter(function (e) { return e[0] !== sheetName; });
72
+
33
- sheet.getRange(1, 1, dat.length, 2).setValues(dat);
73
+ sheet.getRange(1, 1, dat.length, 2).setValues(dat);
34
74
 
35
75
  }
36
76