質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.33%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

1回答

68閲覧

GASにてスプレッドシートのシートのコピーとシート名はセルを参照するスクリプト

hitct2460

総合スコア11

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2025/02/10 08:21

実現したいこと

「TOP」というシートがあります。このシートを同じブック上にコピーして、尚且つシート名は「TOP」のシート上のセルA1と同じ名前にしたいです。A1が「2025」ならコピーしたシートも「2025」にしたいです。

発生している問題・分からないこと

GASは反応しますがシート名がA1と同じ文言にならず「TOPのコピー」となってしまいます。
恐らく
newSheet.setName(name);
newSheet.getRange('A1').setValue(name);

が違うのでしょう。どなたか正しい構文を教えてください。

エラーメッセージ

error

1エラーメッセージはないが、A1と同じ文言にならず「TOPのコピー」となってしまいます。

該当のソースコード

GAS

1function sheetCopy() { 2//スクリプトに紐付いたスプレッドシートを読み込む 3let mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4//アクティブなシートをコピー対象のシートとして読み込む 5let copySheet = mySpreadsheet.getActiveSheet(); 6//コピー対象シートを同一のスプレッドシートにコピー 7copySheet.copyTo(mySpreadsheet); 8var ss = SpreadsheetApp.getActiveSpreadsheet(); 9var sh = ss.getSheetByName("TOP"); 10function insSheet() { 11var list = sh.getRange(1,1,sh.getLastRow(),1).getValues(); 12for (var i=0; i<list.length; i++) { 13ss.insertSheet(list[i][0].toString()); 14newSheet.setName(name); 15 newSheet.getRange('A1').setValue(name); 16} 17} 18} 19

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

GAS

1function copySheet(){ 2 const sheet = SpreadsheetApp.getActiveSpreadsheet(); //アクティブな状態のスプレッドシート 3 const copiedSheet = sheet.getActiveSheet(); //アクティブな状態のスプレッドシート内のシート 4 5 copiedSheet.copyTo(sheet); //「コピーするシート」をコピー 6 7 newSheet.setName(name); 8 newSheet.getRange('A1').setValue(name); 9} 10

だと17:19:37 エラー
ReferenceError: newSheet is not defined
copySheet @ 無題.gs:7
となります。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

シンプルなコードですが
参考になるでしょうか

JavaScript

1function copySheet() { 2 // 初期設定 3 const sheetName = 'TOP'; 4 const cellName = 'A1'; 5 6 // 指定のシートから指定のセルの値を取得 7 const ss = SpreadsheetApp.getActiveSpreadsheet(); 8 const sheet = ss.getSheetByName(sheetName); 9 const value = sheet.getRange(cellName).getValue(); 10 11 // 同名シートが既にあれば終了 12 if (ss.getSheetByName(value)) { 13 console.log(`${value}というシートはすでに存在します`) 14 return; 15 } 16 17 // シートを複製して名前を変更 18 const newSheet = sheet.copyTo(ss); 19 newSheet.setName(value); 20}

投稿2025/02/10 09:56

編集2025/02/10 21:35
YellowGreen

総合スコア861

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.33%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問