【コピペでOK】スプレッドシートでシート名を取得する方法

こんにちは、色んな効率化が大好きなたぬ(@tanuhack)です!

スプレッドシートで表を作成するときに、シートの名前を取得したいことってありませんか?

Excelでは、次のようにCELL関数と文字列を操作する関数を組み合わせることで、シート名を取得することが出来ました。

シート名を取得(Excelの場合)
=RIGHT(CELL("filename",A2),LEN(CELL("filename",A2))-FIND("]",CELL("filename",A2)))

スプレッドシートにもCELL関数は用意されていますが、『検査の種類』でfilenameを選択できません。

スプレッドシートのCELL関数で選択できる検査の種類
address,col,contents,prefix,row,type,width

つまり、2018年6月現在、スプレッドシートの関数を組み合わせるだけでは、シートの名前を取得することが出来ないのです。

では、どうするか。

答えは、Google Apps Script(※通称GAS)を使って、シートの名前を取得します!

Google Apps Scriptとは、Googleが提供する11のサービスをクラウド上で操作できるJavascriptをベースとしたスクリプト言語です。

GASを使って関数を自作することで、スプレッドシートでもシート名が『関数』で取得できるようになりますよ♪

スプレッドシートでシート名を取得する4ステップ
  1. スプレッドシートでGASを使えるようにする
  2. 関数を自作する
  3. スクリプトを実行する
  4. 動作確認をする

get-sheetname1

つまり、今回は『SHEETNAME』という関数を自作して、シート名を取得してみよう!というお話です。

『関数を自作』と書いてはいますが、後で紹介するコードをコピペで使えるので、気負いしないでくださいね。

スプレッドシートでGASを使えるようにする

STEP1:スプレッドシートを新規作成する

get-sheetname2

シート名もせっかくなので、変えておきましょう。

今回は『シートを取得する』という名前に変えています。

STEP2:[ツール]の中から[スクリプトエディタ]を選択

get-sheetname3

STEP3:スクリプトエディタが表示されたのを確認する

get-sheetname4

こんな画面が表示されたらOKです。

get-sheetname5
スクリプトはこの枠内に記述します。

それではさっそく、SHEETNAME関数を自作するためのスクリプトを書いていきましょう!

関数を自作する

STEP1:スクリプトを記述する

get-sheetname6

以下のコードをスクリプトエディタに貼り付けてください。

// シート名を取得する関数を作成する
function sheetname() {
  return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getName();
}

簡単に説明すると、『アクティブなシートの名前を取得する』という内容を書いた非常にシンプルなコードになっています。

プログラムに興味ない人は思考停止で貼り付けて全然大丈夫です(^o^)

STEP2:保存する

get-sheetname7

Command+Sを押すか、カメラのようなアイコンを押すことでスクリプトを保存することができます。

すると、次のようなアラートが表示されるので、名前を付けて保存しましょう。

get-sheetname8
[シート名を取得する]という名前で保存してます。

保存が成功すると、赤文字の『※』がコードの横から消えます。

get-sheetname9

スクリプトを実行する

STEP1:実行ボタンを選択

get-sheetname10

ショートカットキーはありません。

STEP2:許可を確認する

get-sheetname11

デフォルトの状態のままだと、スクリプトは使えないので、スクリプト自体を承認しなければいけません。

[許可を確認]をクリック

STEP3:アカウントを選択する

get-sheetname12

ここでは、スプレッドシートを作成したGoogleアカウントを選択します。

STEP4:アプリを確認する

get-sheetname13
[詳細]を選択
get-sheetname14
[移動]を選択
get-sheetname15
[許可]を選択

動作確認をする

それでは、さっそくスプレッドシートに戻って関数を入力してみましょう。

get-sheetname16

セルに『=sheetname()』と入力してみよう。

すると…。

get-sheetname17

Congratulations!

ちゃんとシート名が取得できていますね!

さいごに

今回はGASを使って、シート名を取得する関数を制作しました。

GASを使えば、関数では絶妙に手が届かないことがスクリプトから実行することが出来ます。

勉強するのは、少しだけハードルが高いかもしれませんが、「こんなことやあんなこともできそう」とスプレッドシートの発想だったり視野だったりが広がること間違いありません。

ぜひ、挑戦してみてください(^o^)