Googleスプレッドシートでシート名を取得するには

はじめに

最近はEXCELの代わりにGoogleスプレッドシートを使うケースが少しずつ増えているようだ。

GoogleスプレッドシートはかなりEXCELに寄せて作ってあるので、仕様はもちろんのこと、挙動や関数名などが全く同じになっていることが多い。
ただし、いくつか細かい点で違いはある。

そんな違いの一つが今回取り上げる「シート名を取得する方法」だ。

EXCELの場合はシート名は物理ファイルに紐づけられているのだが、Googleスプレッドシートはそもそも物理ファイルを介した仕組みではない。
そのため、同じ方法ではシート名が取得できないのだ。

今回は、その「シート名を取得する方法」について紹介する。

シート名を取得する方法

結論から言うと、Googleスプレッドシートでシート名を取得するには関数を作成するよりない。

この一文を読んですぐにページを閉じようとした人がいるかも知れないが、少し待って欲しい。
関数と言っても、わずか3行だけの以下のようなコードを作成するだけだ。

function sheetName() {
  return SpreadsheetApp.getActiveSheet().getName();
}

スプレッドシート側からこの関数を利用するには、sheetName()と記述するだけだ。
他に特別な手間は不要だ。

関数を作成するには

ここでは、前出の関数を作成する手順について説明する。

まずは対象のスプレッドシートを開こう。

スプレッドシートを開いたら、次にメニューから「拡張機能」を選択しよう。
さらにその下に表示されるサブメニューから「Apps Script」を選択しよう。

なお「Apps Script」というのは、スプレッドシートに関数などの機能を付与する仕組みの呼称だ。
Excelには「Visual Basic」という拡張機能が存在するが、それに相当する機能だ。

続いて、以下のような「Apps Script」の編集画面が表示される。
初回起動時には中身が空の関数が自動的に作られ、「myFunction」と仮名が付与されるようだ。

今回は、この「myFunction」は不要なので、上書きしてシート名を取得する関数を作成しよう。

関数名は任意に付与することが可能となっている。
今回は前出の通り「sheetName」という名称を付与することにした。

「Apps Script」の編集画面は、通常のテキストエディターと同じような操作で編集可能となっている。
ここでは、前出の関数のコードをコピーして貼り付ければよい。

編集画面が概ね以下のようになれば成功だ。

続いて、画面上部のフロッピーディスクのような形状の「保存」ボタンを押下して、編集内容を保存しておこう。
このボタンの位置は、関数を記述した部分のすぐ上だ。

以上で、関数の作成は完了だ。

関数を使えるようにするには

さて、上記で作成した関数「sheetName」は、実はまだスプレッドシートから引用して使える状態にはなっていない。
さらにもう一段階「デプロイ」という手順を踏んで、初めて使用可能となるのだ。

デプロイを実行するには、編集画面右上の「デプロイ」ボタンを押下しよう。
すると、ボタンの下にサブメニューが表示されるので、そこから一番上の項目「新しいデプロイ」を選択しよう。

ちなみに、「新しいデプロイ」を選択するのは最初の一回目の時だけのようだ。
既存の関数を編集した場合などは、二番目の項目「デプロイを管理」を選択することになるようだ。

今回は初回なので、「新しいデプロイ」を選択しよう。

すると、以下のようなデプロイの種類を選択する画面が表示される。
ここでは、左上方面にある六角形のマークを選択しよう。

すると、以下のようなサブメニューが表示される。
ここでは、一番上の項目「ウェブアプリ」を選択しよう。

続いて、以下のようなデプロイ確認画面が表示される。
各項目は編集可能だが、自分で使うだけの関数を作る場合は特に編集は不要だ。

準備ができたら「デプロイ」ボタンを押下しよう。

すると、以下のようなアクセス承認画面が表示される。
ここでは、「アクセスを承認」を押下しよう。

すると、以下のような Googleアカウントの選択画面が表示される。
ここでは、自分のアカウントを選択しよう。

アカウントを選択すると、実はここで以下のようなエラーが表示されてしまう。
このエラーの内容は、アカウント所有者の確認が取れていないという意味のようだ。

これを回避するには、先へ進んで確認を行えば良い。

ここでは、画面左下の「Advanced」を選択しよう。

すると、以下のように、これまで画面の下部に隠されていた部分が表示されるようになる。

ここで、最下行の「Go to 無題のプロジェクト(unsafe)」を選択すれば先へ進める。

「unsafe」という表現が気になるが、「開発者を信頼する」場合は問題なさそうだ。
今回は開発者も自分なので心配は不要だろう。

なお、「無題のプロジェクト」というのはデフォルト名で、Apps Script を初めて作成すると自動的に付与される名前のようだ。

上記を確認して問題ない場合は、最下行の「Go to 無題のプロジェクト(unsafe)」を選択しよう。

すると、以下の確認画面が表示される。
問題がなければ「Allow」を選択しよう。

以上でデプロイは完了だ。
これで、作成した関数をスプレッドシートで使えるようになっているはずだ。

関数を使ってみる

それでは、作成した関数を実際に使ってみよう。
今回は、スプレッドシートのA3セルにシート名を表示してみることにする。

以下のように、関数を引用する数式「=sheetName()」をA3セルに入力しよう。

すると、以下のようにA3セルにシート名が表示された。
シート名を取得する関数が正しく動作していることが確認できた。

なお、デプロイした結果がすぐにスプレッドシート側で使えないことがあるようだ。

このような状況が発生する詳細な条件は不明だが、一度スプレッドシートを閉じて再度開けば解消されるようだ。

以上で、シート名を取得する関数の説明は終了だ。

おまけ

参考までに、EXCELでシート名を取得する有名な式を紹介しておく。
以下のようなコードを見たことがある人は多いだろう。

= RIGHT(CELL("filename", A1), LEN(CELL("filename", A1)) -FIND("]",CELL("filename", A1)))

上記の式を任意のセルに貼り付けると、シート名が取得できる。

以下の例では、B3セルに上記の式を貼り付けている。

すると、以下のようにシート名がB3セルに表示される。

以上で、EXCELでシート名を取得する方法の説明は完了だ。

まとめ

今回はGoogleスプレッドシートでシート名を取得する方法を紹介した。
実現するには関数を作成してデプロイする必要があるが、その方法も合わせて紹介した。

参考までに、EXCELでシート名を取得する方法も紹介した。

2件のコメント

コメントする

メールアドレスが公開されることはありません。