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セルに表示される。

まとめ

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

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

2件のコメント

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です