GASでGoogleスプレッドシートのシート名を一覧表示&一括変更

Googleスプレッドシートでシート名を変更する作業を、手作業で1つずつ行うと手間がかかりませんか?

特にシート数が多い場合は、時間がかかるだけでなく、入力ミスも発生しやすくなります。

そこで、Google Apps Script(GAS)を活用して、シート名を一覧化して管理し、一括変更することで手間をなくせます。

この記事では、

  • スクリプト①:現在のシート名を一覧化
  • スクリプト②:新しいシート名に一括変更

の2つを組み合わせて、シート名を一括変更する方法をご紹介します。

目次

完成イメージ

変更前

変更後

  • スクリプト①:現在のシート名を一覧表示(A列)
    • A列をハイパーリンク付きにすることで、シートを確認可能
  • スクリプト②:新しいシート名に一括変更(B列)
    • B列が空欄ならシート名は変更されず、ミスを防げる

手順

スクリプト①:現在のシート名を一覧表示

このスクリプトを実行すると、「シート一覧」というシートが新たに作成され、ファイル内のシート名が一覧で表示されます。

ハイパーリンク付きでクリックすると各シートに移動もできるため、シートの内容確認が可能です。

STEP
スプレッドシートを開く

複数のシートがあるスプレッドシートファイルを開きます。

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプト①の作成

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

スクリプト①:現在のシート名を一覧表示

function listSheetNamesWithLinks() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート一覧");

  if (!sheet) {
    sheet = ss.insertSheet("シート一覧"); // シートがない場合は新規作成
  } else {
    sheet.clear(); // 既存データをクリア
  }

  var sheets = ss.getSheets();
  var sheetId = ss.getId(); // スプレッドシートのIDを取得
  var data = [["現在のシート名", "新しいシート名"]]; // ヘッダー行
  
  for (var i = 0; i < sheets.length; i++) {
    var sheetName = sheets[i].getName();
    var sheetGid = sheets[i].getSheetId(); // 各シートのGIDを取得
    var hyperlinkFormula = `=HYPERLINK("https://docs.google.com/spreadsheets/d/${sheetId}/edit#gid=${sheetGid}", "${sheetName}")`;
    data.push([hyperlinkFormula, ""]); // A列にハイパーリンク、B列は新しいシート名を入力するため空欄
  }

  // A列にHYPERLINK関数を適用、B列に新しいシート名を入力可能にする
  sheet.getRange(1, 1, data.length, 2).setValues(data);
}
スクリプトの説明
「シート一覧」シートを作成 or クリア
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート一覧");

  if (!sheet) {
    sheet = ss.insertSheet("シート一覧"); // シートがない場合は新規作成
  } else {
    sheet.clear(); // 既存データをクリア
  }
  • SpreadsheetApp.getActiveSpreadsheet() で現在のスプレッドシートを取得します。
  • getSheetByName("シート一覧") で 「シート一覧」シートが存在するか確認します。
  • 存在しなければ insertSheet("シート一覧") で作成、存在すれば clear() でデータをクリアします。
スプレッドシート内のすべてのシート名を取得
  var sheets = ss.getSheets();
  var sheetId = ss.getId(); // スプレッドシートのIDを取得
  var data = [["現在のシート名", "新しいシート名"]]; // ヘッダー行
  
  for (var i = 0; i < sheets.length; i++) {
    var sheetName = sheets[i].getName();
  • getSheets() でシートのリストを取得し、ループで1つずつ処理します。
各シートへのハイパーリンクを生成
    var sheetGid = sheets[i].getSheetId(); // 各シートのGIDを取得
    var hyperlinkFormula = `=HYPERLINK("https://docs.google.com/spreadsheets/d/${sheetId}/edit#gid=${sheetGid}", "${sheetName}")`;
  • スプレッドシートの ID (getId()) を取得。各シートの GID (getSheetId()) を取得し、URLの gid=... 部分に適用します。
  • =HYPERLINK("https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートGID", "シート名") という数式をA列に挿入します。
「シート一覧」にデータを出力
    data.push([hyperlinkFormula, ""]); // A列にハイパーリンク、B列は新しいシート名を入力するため空欄
  }

  // A列にHYPERLINK関数を適用、B列に新しいシート名を入力可能にする
  sheet.getRange(1, 1, data.length, 2).setValues(data);
}
  • ヘッダー行(A1:「現在のシート名」, B1:「新しいシート名」)を追加します。
  • A列にハイパーリンク付きのシート名、B列に新しいシート名を入力するための空欄をセットします。
  • setValues(data) を使用し、データを一括で書き込みます。
STEP
スクリプト①を保存

スクリプトを書いたら、名前を付けて保存します。

(例:「シート一覧」)

STEP
スクリプト①を実行

スクリプトを実行して、ファイル内のシート一覧を作成します。

初めてそのスクリプトを実行する場合は権限の確認が必要です。

そのため、『権限を確認』を押します。

許可の詳細手順

「詳細」をクリックします。

無題のプロジェクト(安全ではないページ)に移動」をクリックします。

許可」をクリックします。

STEP
シート一覧が作成される

「シート一覧」のA列に、現在のシート名が一覧表示されます。

スクリプト②:新しいシート名に一括変更

次に、B列に入力した新しいシート名に変更するスクリプトを実行します。

STEP
B列に新しいシート名を入力

B列に新しいシート名を入力します。

(入力がない空白セルは変更なしで処理されます。)

STEP
GASエディタを開く
スクリプト①と同様

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプト②の作成
スクリプト①と同様に貼り付け

function myFunction(){

}

が最初から入っているため、消去して以下のスクリプトを貼り付けます。

スクリプト②:新しいシート名に一括変更

function renameSheetsFromList() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート一覧");
  
  if (!sheet) {
    Logger.log("シート名変更リストが見つかりません");
    return;
  }
  
  var data = sheet.getDataRange().getValues();
  
  for (var i = 1; i < data.length; i++) { // 1行目はヘッダーなのでスキップ
    var oldName = data[i][0]; // A列(現在のシート名)
    var newName = data[i][1]; // B列(新しいシート名)
    
    if (oldName && newName && oldName !== newName) {
      var targetSheet = ss.getSheetByName(oldName);
      if (targetSheet) {
        try {
          targetSheet.setName(newName);
        } catch (e) {
          Logger.log("エラー: " + oldName + " を " + newName + " に変更できませんでした。" + e.message);
        }
      }
    }
  }
}
スクリプトの説明
「シート一覧」シートの取得
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("シート一覧");
  
  if (!sheet) {
    Logger.log("シート名変更リストが見つかりません");
    return;
  }
  • getSheetByName("シート一覧") を使って 「シート一覧」シートが存在するか確認 します。
  • 存在しない場合は Logger.log("シート名変更リストが見つかりません") を出力し、処理を中断します。
「シート一覧」シートのデータを取得
 var data = sheet.getDataRange().getValues();
  
  for (var i = 1; i < data.length; i++) { // 1行目はヘッダーなのでスキップ
  • getDataRange().getValues() を使い、すべてのデータ(A列・B列)を取得 します。
  • 1行目(ヘッダー行)をスキップし、2行目からループ処理します。
シート名の変更処理
    var oldName = data[i][0]; // A列(現在のシート名)
    var newName = data[i][1]; // B列(新しいシート名)
    
    if (oldName && newName && oldName !== newName) {
      var targetSheet = ss.getSheetByName(oldName);
  • A列の現在のシート名 (oldName) と B列の新しいシート名 (newName) を取得します。
  • oldNamenewName の両方が存在し、異なる名前の場合のみ シート名を変更します。
  • getSheetByName(oldName) で対象のシートを取得し、存在すれば setName(newName) で変更。
エラーハンドリング
        try {
          targetSheet.setName(newName);
        } catch (e) {
          Logger.log("エラー: " + oldName + " を " + newName + " に変更できませんでした。" + e.message);
        }
  • try-catch を使用し、シート名変更時にエラーが発生した場合は Logger.log() でエラーメッセージを記録します。
  • 変更不可のシート名(すでに存在する名前や無効な名前) がある場合は、スキップして処理を続行します。
STEP
スクリプト②を保存
スクリプト①と同様

スクリプトを書いたら、名前を付けて保存します。

(例:「シート名変更」)

STEP
スクリプト②を実行
スクリプト①と同様

スクリプトを実行して、シート名を一括変更します。

STEP
シート名が一括変更される

変更前

変更後

B列の入力内容に基づいて シート名が一括変更されます。

なお、B列が空欄のシートは変更されません。

まとめ

今回のスクリプト2つを使うことで、Googleスプレッドシートのシート名を効率的に管理し、一括変更できるようになります。

手動での変更作業と比べて時間を大幅に短縮できるほか、事前に内容を確認しながら変更作業を行えるため、入力ミスのリスクも軽減できます。

シート数が多く、手作業の変更では大変な時にご活用ください。

弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。

GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。

また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次