Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
30
Help us understand the problem. What is going on with this article?
@okNirvy

【GAS】スプレッドシート内の全シートへのリンク一覧を作る

Google スプレッドシートで仕様書なんかをまとめていると、シート数が20、30になっていたりすることがある。
こうなると目的のシートを探すのに手間がかかるので、インデックスみたいなシートを作っておきたくなる。

手作業でリンクをいちいち設定するのも面倒なので、リンク一覧を作るGASを作った。

function PutLinks()
{
  // スプレッドシート内の全シートとスプレッドシートのID
  var sheets = SpreadsheetApp.getActive().getSheets();
  var ssId = SpreadsheetApp.getActive().getId();

  // ハイパーリンク文字列の配列
  var linkList = [[]];

  for(var i=0; i<sheets.length; i++) {
    // シートのIDと名前
    var sheetId = sheets[i].getSheetId();
    var sheetName = sheets[i].getSheetName();

    // シートのURLからハイパーリンク文字列を組み立て
    var url = "https://docs.google.com/spreadsheets/d/" + ssId + "/edit#gid=" + sheetId;
    var link = [ '=HYPERLINK("' + url + '","' + sheetName + '")' ];

    // ハイパーリンク文字列を配列に格納
    linkList[i] = link;
  }

  // 選択中のセルにハイパーリンク文字列を入れる
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var cell = sheet.getActiveCell();
  var range = sheet.getRange(cell.getRow() , cell.getColumn() ,  linkList.length , 1);
  range.setValues(linkList);
}

jsはあまり触ったことないので不自然な書き方をしているかもしれないが、とりあえずこれで動く。

Before
before.png

After
after.png

使い方 - How too use (2021/03/05 編集リクエスト)

正しい使い方

1.ツール>スクリプトエディタをクリック

スクリーンショット 2021-03-05 15.40.16.png
2. GASのjsのIDEが表示されるので、コードをコピペ

スクリーンショット 2021-03-05 15.42.58.png
3. ブラウザのタブを移動してリンクの配置したい列の任意の行のセルを選択状態にする
今回は、K列の3行目のセルを選択。(青くなっている部分です。)

スクリーンショット 2021-03-05 15.38.30.png
4. ブラウザのタブを移動して再度コードを表示して、実行ボタンを押下する

スクリーンショット 2021-03-05 15.44.33.png

この時に認証が出てくるので、「権限を確認」ボタンをおす。
この時に「安全でないので接続できません。」という旨のページが出てきた場合は、その画面の「詳細」>「〇〇のページへ接続する」のようなリンクが下側に小さく表示されているのでそれをクリックで続行できる。

スクリーンショット 2021-03-05 15.48.10.png
5. 実行が完了したら手順3で選択した場所に戻ると、リンクが追加されている
実行完了後に選択していたページを確認するとリンクが生成されている

スクリーンショット 2021-03-05 15.50.59.png

間違い例

関数を使うときは画像のようにセルに=関数名()と使う場合が多いですが、この関数をセルに指定して使用すると画像のようなエラーがでます。

スクリーンショット 2021-03-05 15.32.11.png

エラー文:

Exception: You do not have permission to call setValues
30
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
okNirvy
churapps
沖縄から届けるエンターテイメント

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
30
Help us understand the problem. What is going on with this article?