【VBAリファレンス】Google Apps Scriptでスプレッドシートを自在に操る!新規作成から名前変更までを徹底解説

スポンサーリンク

はじめに:なぜGoogle Apps Scriptでスプレッドシートを操作するのか?

Google Workspaceの強力なツール群の中でも、Google スプレッドシートはその汎用性の高さから、多くのビジネスシーンで活用されています。しかし、定型的な作業の自動化や、より複雑なデータ管理、他のアプリケーションとの連携といった高度なニーズに応えるためには、手動での操作だけでは限界があります。

そこで登場するのが、Google スプレッドシートに標準搭載されているスクリプト言語、Google Apps Script(GAS)です。

GASはJavaScriptをベースとしており、Googleの各種サービス(スプレッドシート、ドキュメント、Gmail、カレンダーなど)をプログラムから操作できるのが最大の特徴です。特に、スプレッドシートの操作においては、以下のようなメリットがあります。

  • 作業の自動化: 日々のレポート作成、データ集計、メール送信などを自動化し、人的ミスを削減し、時間を節約できます。
  • 高度な機能の実装: 標準機能では実現できない、カスタム関数や独自のインターフェースを作成できます。
  • 他サービスとの連携: Gmailからメール本文のデータをスプレッドシートに転記したり、スプレッドシートのデータを元にGoogleカレンダーに予定を追加したりといった連携が可能です。
  • データ管理の効率化: 大量のデータのインポート・エクスポート、複雑な条件でのデータ抽出・更新などを効率的に行えます。

本記事では、GASを用いたスプレッドシート操作の基本中の基本である、「スプレッドシート(ブック)の新規作成」と「スプレッドシートの名前変更」に焦点を当て、その方法を詳細に解説します。GASの入門者の方でも安心して取り組めるよう、サンプルコードを交えながら、具体的な手順を分かりやすく説明していきます。

スプレッドシート(ブック)の新規作成

GASを使って新しいスプレッドシートを作成するのは非常に簡単です。`SpreadsheetApp` サービスを利用することで、プログラムから直接スプレッドシートを作成し、必要に応じて初期設定を行うことができます。

1. 基本的なスプレッドシートの作成

最も基本的な方法は、`SpreadsheetApp.create()` メソッドを使用することです。このメソッドに引数として新しいスプレッドシートの名前を指定するだけで、Google Drive上に新しいスプレッドシートが作成されます。


function createNewSpreadsheet() {
  // 新しいスプレッドシートを作成し、そのオブジェクトを取得
  var newSpreadsheet = SpreadsheetApp.create("新しいスプレッドシート");

  // 作成されたスプレッドシートのIDを表示(デバッグ用)
  Logger.log("作成されたスプレッドシートのID: " + newSpreadsheet.getId());
  // 作成されたスプレッドシートのURLを表示(デバッグ用)
  Logger.log("作成されたスプレッドシートのURL: " + newSpreadsheet.getUrl());
}

このコードを実行すると、Google Driveのルートディレクトリに「新しいスプレッドシート」という名前の空のスプレッドシートが作成されます。`Logger.log()` で表示されるIDやURLは、後でそのスプレッドシートを特定したり、直接開いたりする際に役立ちます。

2. 特定のフォルダにスプレッドシートを作成する

デフォルトでは、スプレッドシートはGoogle Driveのルートフォルダに作成されますが、特定のフォルダに整理して保存したい場合もあるでしょう。その場合は、まず目的のフォルダを取得し、そのフォルダに対して `create()` メソッドを実行します。

フォルダを取得するには、`DriveApp` サービスを使用します。`DriveApp.getFolderById()` メソッドにフォルダのIDを指定するか、`DriveApp.getFoldersByName()` メソッドにフォルダ名を使用してフォルダを検索します。


function createSpreadsheetInSpecificFolder() {
  // 保存したいフォルダのIDを指定 (例: "YOUR_FOLDER_ID")
  // フォルダIDは、Google Driveでそのフォルダを開いた際のURLから取得できます。
  var folderId = "YOUR_FOLDER_ID"; // ここを実際のフォルダIDに置き換えてください
  var folder = DriveApp.getFolderById(folderId);

  // 新しいスプレッドシートを作成し、そのオブジェクトを取得
  var newSpreadsheet = folder.createSpreadsheet("フォルダ内スプレッドシート");

  Logger.log("フォルダ '" + folder.getName() + "' にスプレッドシートを作成しました。");
  Logger.log("スプレッドシートURL: " + newSpreadsheet.getUrl());
}

【注意点】 `folderId` の部分を、実際にスプレッドシートを作成したいフォルダのIDに置き換える必要があります。フォルダIDは、Google Driveでそのフォルダを開いた際のURLの末尾にある文字列です(例: `https://drive.google.com/drive/folders/xxxxxxxxxxxxxxxxxxxxxxx` の `xxxxxxxxxxxxxxxxxxxxxxx` の部分)。

もしフォルダIDが不明な場合は、`DriveApp.getFoldersByName(“フォルダ名”)` を使用して検索することも可能です。ただし、同名のフォルダが複数存在する場合、意図しないフォルダが選択される可能性があるため、フォルダIDを指定する方が確実です。


function createSpreadsheetInSpecificFolderByName() {
  // 保存したいフォルダ名を指定
  var folderName = " my_data_folder "; // ここを実際のフォルダ名に置き換えてください

  // フォルダ名でフォルダを検索
  var folders = DriveApp.getFoldersByName(folderName);

  if (folders.hasNext()) {
    var folder = folders.next(); // 最初に見つかったフォルダを取得

    // 新しいスプレッドシートを作成
    var newSpreadsheet = folder.createSpreadsheet("フォルダ内スプレッドシート_名前検索");

    Logger.log("フォルダ '" + folder.getName() + "' にスプレッドシートを作成しました。");
    Logger.log("スプレッドシートURL: " + newSpreadsheet.getUrl());
  } else {
    Logger.log("指定されたフォルダ '" + folderName + "' が見つかりませんでした。");
    // 必要であれば、ここで新しいフォルダを作成する処理を追加することも可能です。
  }
}

このコードでは、まず指定されたフォルダ名で検索し、見つかった場合にそのフォルダ内にスプレッドシートを作成しています。フォルダが見つからなかった場合のメッセージも表示されるため、エラーハンドリングとしても機能します。

スプレッドシートの名前変更

既存のスプレッドシートの名前を変更したい場合も、GASを使えば簡単に行えます。`Spreadsheet` オブジェクトの `renameTo()` メソッドを使用します。

1. 特定のスプレッドシートの名前を変更する

名前を変更したいスプレッドシートを特定するには、いくつかの方法があります。

  • IDで特定する: `SpreadsheetApp.openById(spreadsheetId)`
  • URLで特定する: `SpreadsheetApp.openByUrl(spreadsheetUrl)`
  • ファイル名で特定する(ただし、同名ファイルが複数ある場合は注意): `DriveApp.getFilesByName(fileName)` を使ってファイルを取得し、そこからスプレッドシートオブジェクトを取得する。

ここでは、最も確実な「ID」または「URL」を使用する方法を紹介します。


function renameSpreadsheetById() {
  // 名前を変更したいスプレッドシートのIDを指定
  var spreadsheetId = "YOUR_SPREADSHEET_ID"; // ここを実際のIDに置き換えてください
  // 新しいスプレッドシート名
  var newName = "変更後のスプレッドシート名";

  try {
    // IDを指定してスプレッドシートを開く
    var ss = SpreadsheetApp.openById(spreadsheetId);
    // スプレッドシートの名前を変更
    ss.renameTo(newName);
    Logger.log("スプレッドシート '" + ss.getName() + "' の名前を '" + newName + "' に変更しました。");
  } catch (e) {
    Logger.log("エラーが発生しました: " + e.message);
    Logger.log("指定されたIDのスプレッドシートが見つからないか、アクセス権限がない可能性があります。IDを確認してください。");
  }
}

【注意点】 `spreadsheetId` の部分を、名前を変更したいスプレッドシートの実際のIDに置き換える必要があります。スプレッドシートのIDは、そのスプレッドシートを開いた際のURLの末尾にある文字列です(例: `https://docs.google.com/spreadsheets/d/xxxxxxxxxxxxxxxxxxxxxxx/edit` の `xxxxxxxxxxxxxxxxxxxxxxx` の部分)。また、`try…catch` ブロックを使用することで、IDが存在しない場合やアクセス権限がない場合にエラーが発生してもスクリプトが停止せず、エラーメッセージを表示するようにしています。


function renameSpreadsheetByUrl() {
  // 名前を変更したいスプレッドシートのURLを指定
  var spreadsheetUrl = "https://docs.google.com/spreadsheets/d/YOUR_SPREADSHEET_ID/edit"; // ここを実際のURLに置き換えてください
  // 新しいスプレッドシート名
  var newName = "URL指定による名前変更";

  try {
    // URLを指定してスプレッドシートを開く
    var ss = SpreadsheetApp.openByUrl(spreadsheetUrl);
    // スプレッドシートの名前を変更
    ss.renameTo(newName);
    Logger.log("スプレッドシート '" + ss.getName() + "' の名前を '" + newName + "' に変更しました。");
  } catch (e) {
    Logger.log("エラーが発生しました: " + e.message);
    Logger.log("指定されたURLのスプレッドシートが見つからないか、アクセス権限がない可能性があります。URLを確認してください。");
  }
}

URLで開く場合も、IDの場合と同様に `try…catch` でエラーハンドリングを行うことが推奨されます。

2. 特定のフォルダ内にあるスプレッドシートの名前を変更する

特定のフォルダ内にあるスプレッドシートを、ファイル名で特定して名前を変更したい場合もあるでしょう。この場合は、まず `DriveApp` を使ってフォルダを取得し、そのフォルダ内のファイルを検索してスプレッドシートオブジェクトを取得します。


function renameSpreadsheetInFolderByName() {
  // 対象のフォルダ名
  var folderName = " my_data_folder "; // ここを実際のフォルダ名に置き換えてください
  // 名前を変更したい現在ファイル名
  var currentFileName = "フォルダ内スプレッドシート"; // ここを実際のファイル名に置き換えてください
  // 新しいファイル名
  var newFileName = "リネーム済みスプレッドシート";

  try {
    // フォルダを検索
    var folders = DriveApp.getFoldersByName(folderName);
    if (folders.hasNext()) {
      var folder = folders.next();
      // フォルダ内のファイルを名前で検索
      var files = folder.getFilesByName(currentFileName);

      if (files.hasNext()) {
        var file = files.next();
        // ファイルがスプレッドシートであることを確認 (MIMEタイプで判定)
        if (file.getMimeType() === MimeType.GOOGLE_SHEETS) {
          var ss = SpreadsheetApp.open(file); // ファイルオブジェクトからスプレッドシートを開く
          ss.renameTo(newFileName);
          Logger.log("フォルダ '" + folder.getName() + "' 内のファイル '" + currentFileName + "' を '" + newFileName + "' に変更しました。");
        } else {
          Logger.log("ファイル '" + currentFileName + "' はスプレッドシートではありません。");
        }
      } else {
        Logger.log("フォルダ '" + folder.getName() + "' 内にファイル '" + currentFileName + "' が見つかりませんでした。");
      }
    } else {
      Logger.log("フォルダ '" + folderName + "' が見つかりませんでした。");
    }
  } catch (e) {
    Logger.log("エラーが発生しました: " + e.message);
  }
}

このコードでは、まずフォルダを検索し、そのフォルダ内で指定されたファイル名を持つファイルを探します。見つかったファイルがスプレッドシートであるかを確認してから名前を変更しています。MIMEタイプ (`getMimeType()`) で判定することで、誤って他の種類のファイル(ドキュメントやプレゼンテーションなど)の名前を変更してしまうリスクを避けています。

実務アドバイス

Google Apps Scriptを使ってスプレッドシートを操作する際に、さらに実務で役立ついくつかのポイントを紹介します。

  • エラーハンドリングの徹底: 今回のサンプルコードにも含めましたが、`try…catch` ブロックを使ったエラーハンドリングは非常に重要です。ファイルが見つからない、アクセス権限がない、APIの制限に達したなど、予期せぬエラーは必ず発生します。エラーメッセージをログに出力したり、ユーザーに通知したりすることで、問題の特定と解決を迅速に行えます。
  • 権限の管理: GASスクリプトは、実行する際にGoogleアカウントの権限を必要とします。特に `DriveApp` を使用する場合、Google Driveへのアクセス権限が必要です。初めてスクリプトを実行する際には、権限の承認を求められます。組織によっては、管理者によるスクリプト実行の制限が設けられている場合もあるため、事前に確認しておきましょう。
  • スクリプトの実行方法: GASスクリプトは、スプレッドシートのエディタから手動で実行するだけでなく、トリガー(時間駆動、イベント駆動)を設定して自動実行させることができます。例えば、「毎日午前9時にレポートを自動作成する」「スプレッドシートが編集されたら特定の処理を実行する」といったことが可能です。
  • ログの活用: `Logger.log()` はデバッグに非常に役立ちます。スクリプトの実行状況や変数の値などをログに出力することで、コードが意図通りに動いているかを確認できます。ログは、GASエディタの「実行ログ」で確認できます。
  • 命名規則の重要性: ファイル名、フォルダ名、変数名などを一貫性のある規則で命名することは、コードの可読性を高め、後から自分や他の人がコードを理解しやすくするために不可欠です。
  • GASのAPIドキュメントを参照する: GASには非常に多くのサービスとメソッドが用意されています。今回紹介した `SpreadsheetApp` や `DriveApp` 以外にも、様々な機能があります。公式のGASドキュメントは非常に充実しているので、積極的に参照しましょう。

まとめ

本記事では、Google Apps Script(GAS)の基本である、スプレッドシート(ブック)の新規作成と名前変更の方法について、具体的なサンプルコードを交えながら詳細に解説しました。

SpreadsheetApp.create() を使えば簡単に新しいスプレッドシートを作成でき、`folder.createSpreadsheet()` を使えば特定のフォルダに保存することも可能です。また、既存のスプレッドシートの名前変更は、`Spreadsheet.renameTo()` メソッドで実現できます。スプレッドシートの特定にはIDやURLを利用するのが最も確実ですが、DriveAppと組み合わせることでファイル名やフォルダ名から操作することも可能です。

これらの基本的な操作をマスターすることで、GASを使ったスプレッドシート活用の幅が大きく広がります。日々のルーチンワークの自動化から、より高度なデータ管理まで、GASはあなたの業務効率を劇的に向上させる強力なツールとなるでしょう。

ぜひ、本記事で紹介したコードを参考に、ご自身の業務にGASを取り入れてみてください。最初は簡単なスクリプトから始め、徐々に複雑な処理に挑戦していくことをお勧めします。Google Apps Scriptの世界へようこそ!

タイトルとURLをコピーしました