回答編集履歴

8

2024/12/07 22:23

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -11,9 +11,9 @@
11
11
  コードのXXXXXの部分をBのIDで書き換えてから
12
12
  実行してください
13
13
  IDとは、Bのシートを開いた時のURL欄の
14
- https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit?gid=0123456789
14
+ ```https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit?gid=0123456789```
15
15
 
16
- 1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
16
+ ```1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX```
17
17
  の部分です
18
18
 
19
19
  ```JavaScript

7

2024/12/07 22:20

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -10,7 +10,11 @@
10
10
 
11
11
  コードのXXXXXの部分をBのIDで書き換えてから
12
12
  実行してください
13
-
13
+ IDとは、Bのシートを開いた時のURL欄の
14
+ https://docs.google.com/spreadsheets/d/1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/edit?gid=0123456789
15
+
16
+ 1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
17
+ の部分です
14
18
 
15
19
  ```JavaScript
16
20
  // Aで開いているシートをBに同じ名前でコピペ(または置換)

6

2024/12/07 22:12

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -44,5 +44,13 @@
44
44
  .addToUi();
45
45
  }
46
46
  ```
47
+ なお、
48
+ このスクリプトを保存した後で、
49
+ Aを一度閉じてから再度開くと
50
+ 次の画像のようにヘルプの隣にメニューができますので、
51
+ 1ヶ月分のシフト表の修正が終わったら、そのシートを閉じる前に
52
+ メニューからスクリプトを実行すると B にコピペされます
47
53
 
48
54
 
55
+ ![メニューの表示](https://ddjkaamml8q8x.cloudfront.net/questions/2024-12-08/eefdce5b-5c3a-4ada-aa42-302f9a1b714c.png)
56
+

5

2024/12/07 18:37

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -2,7 +2,7 @@
2
2
  Aでいずれかの月のシートの修正が終わった時点で
3
3
  その月のシートを開いたまま
4
4
  ヘルプの右隣のメニューからスクリプトを実行すると
5
- Bの同月のシートがA開いている月のシートと同じ内容になります
5
+ Bの同月のシートがA開いている月のシートと同じ内容になります
6
6
  (もしBに同じ月のシートがなかったらBに新たに追加されます)
7
7
 
8
8
  という動作でよければ…

4

2024/12/07 18:23

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
 
15
15
  ```JavaScript
16
- // Aで開いているシートB同じ名前のシートを置換(またはAからBにコピペ
16
+ // Aで開いているシートB同じ名前でコピペ(または置換
17
17
  function copySheet() {
18
18
  // * 初期設定 *
19
19
  // BのID(↓引用符の中にBのIDをコピペ)

3

2024/12/07 18:21

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -8,7 +8,7 @@
8
8
  という動作でよければ…
9
9
  次のコードを参考にしてください
10
10
 
11
- コードのXXXXXの部分をアルバイト向けスプレッドシートのIDで書き換えてから
11
+ コードのXXXXXの部分をBのIDで書き換えてから
12
12
  実行してください
13
13
 
14
14
 

2

コメントもA, Bとしました

2024/12/07 18:20

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -1,8 +1,11 @@
1
1
  ご希望の動作がよくわかりませんが、
2
- 社員向けシートの修正が終わった時点で
2
+ Aでいずれかの月のシートの修正が終わった時点で
3
+ その月のシートを開いたまま
3
- メニューからスクリプトを実行すると
4
+ ヘルプの右隣のメニューからスクリプトを実行すると
4
- 修正したシートでアルバイト向けスプレッドシート同じ名前のシートが置き換わる、
5
+ Bの同月のシートがA開いている月のシート同じ内容になります
5
- もし同じ名前のシートがなかったら追加するという動作でよければ…
6
+ もしBに同じのシートがなかったらBに新たに追加されま
7
+
8
+ という動作でよければ…
6
9
  次のコードを参考にしてください
7
10
 
8
11
  コードのXXXXXの部分をアルバイト向けのスプレッドシートのIDで書き換えてから

1

社員向け: A , アルバイト向け: B としました

2024/12/07 18:07

投稿

YellowGreen
YellowGreen

スコア841

test CHANGED
@@ -10,33 +10,34 @@
10
10
 
11
11
 
12
12
  ```JavaScript
13
- // 社員向けシートで置換
13
+ // Aで開いているシートでBの同じ名前のシートを置換(またはAからBにコピペ)
14
14
  function copySheet() {
15
15
  // * 初期設定 *
16
- // コピー先スプレッドシートのID(↓引用符の中に実際のIDをコピペ)
16
+ // BのID(↓引用符の中にBのIDをコピペ)
17
- const targetSsId = '1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
17
+ const B_ID = '1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
18
18
 
19
- // コピー元シートをコピー先のスプレッドシートにコピペ
19
+ // 開いているAのシートをBにコピペ
20
+ // 同じ名前のシートがあったら置換
20
- const sourceSs = SpreadsheetApp.getActiveSpreadsheet();
21
+ const A = SpreadsheetApp.getActiveSpreadsheet();
21
- const targetSs = SpreadsheetApp.openById(targetSsId);
22
+ const B = SpreadsheetApp.openById(B_ID);
22
- const sourceSheet = sourceSs.getActiveSheet();
23
+ const sheetInA = A.getActiveSheet();
23
- const sourceSheetName = sourceSheet.getName();
24
+ const nameSheetInA = sheetInA.getName();
24
- const tempSheet = sourceSheet.copyTo(targetSs);
25
+ const sheetTemp = sheetInA.copyTo(B);
25
- const targetSheet = targetSs.getSheetByName(sourceSheetName);
26
+ const sheetInB = B.getSheetByName(nameSheetInA);
26
- if (targetSheet) {
27
+ if (sheetInB) {
27
- const index = targetSheet.getIndex();
28
+ const index = sheetInB.getIndex();
28
- targetSs.deleteSheet(targetSheet);
29
+ B.deleteSheet(sheetInB);
29
- tempSheet.activate();
30
+ sheetTemp.activate();
30
- targetSs.moveActiveSheet(index);
31
+ B.moveActiveSheet(index);
31
32
  }
32
- tempSheet.setName(sourceSheetName);
33
+ sheetTemp.setName(nameSheetInA);
33
34
  }
34
35
 
35
- // メニュー表示
36
+ // メニューのヘルプの右に新たなメニューを作成
36
37
  function onOpen() {
37
38
  const ui = SpreadsheetApp.getUi();
38
- ui.createMenu('アルバイト用シート')
39
+ ui.createMenu('シートのコピペ')
39
- .addItem('現在のシートで置換', 'copySheet')
40
+ .addItem('開いているシートをBにコピペ', 'copySheet')
40
41
  .addToUi();
41
42
  }
42
43
  ```