2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【googleスプレッドシート】シートIDを割り出す関数をつくる(セルへのリンクを動的に拾う方法)

Last updated at Posted at 2020-04-26

スプレッドシートのシートには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()あたりを使ってもやりようはあったな、とも思います。
ですがまあ、これはこれでシンプルでよかったかもしれない。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?