スプレッドシートのシートにはIDが振られます。
シートのアドレスの末尾にある「#gid=XXXXXXXXX」というやつですね。
このIDを取得したい!ということがよくありませんか?
私はありません。
ないのですが、たまたまそういう場面に遭遇したので、解決方法を記しておきます。
ちなみにノンプログラマーの私が初めてGASをいじったのはこれをやるためでした。
#【解決方法】GASでシートIDを割り出す関数をつくる
スクリプトエディタを開き、以下の関数を定義して保存します。
function sheetid() {
return SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getSheetId();
}
以上です。
これで、スプレッドシート上でsheetid()
という関数を入力すれば、そのシートのシートIDを返してくれるようになります。
#【余談】セルへのハイパーリンクを動的に補足するために、この関数が必要だった
なぜこの関数が必要だったかといえば、セルへのハイパーリンクの仕様が原因でした。
スプレッドシートでは同スプレッドシート内のセルへのリンクが次のような形でつけられます。
=HYPERLINK("#rangeid=XXXXXX")
あるとき、特定のテキストをキーにして、このリンクするセルを動的に補足したいシーンがありました。
(特定のテキストが入ったセルにmatchさせてリンクしたかった)
なので、このrangeidというものをどうにか割り出せないかいろいろ調べたのですが、どうも方法が見つけられませんでした。(あるのかな…。)
それでいろいろ調べたところ、どうも同スプレッドシート内のセルへのリンクは、このような形でもできることがわかりました。
=HYPERLINK("#gid=XXXXXXX&range=A1")
そう、シートIDさえわかれば、「A1」などの単純な行列指定でリンクできるのです。
というわけでさらに調べた結果、シートIDなら割り出せたので事なきを得た…ということでした。
しかし今考えると、getRow()
とかgetColumn()
あたりを使ってもやりようはあったな、とも思います。
ですがまあ、これはこれでシンプルでよかったかもしれない。