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はあまり触ったことないので不自然な書き方をしているかもしれないが、とりあえずこれで動く。
使い方 - How too use (2021/03/05 編集リクエスト)
正しい使い方
1.ツール>スクリプトエディタをクリック
3. ブラウザのタブを移動してリンクの配置したい列の任意の行のセルを選択状態にする
今回は、K列の3行目のセルを選択。(青くなっている部分です。)
4. ブラウザのタブを移動して再度コードを表示して、実行ボタンを押下する
この時に認証が出てくるので、「権限を確認」ボタンをおす。
この時に「安全でないので接続できません。」という旨のページが出てきた場合は、その画面の「詳細」>「〇〇のページへ接続する」のようなリンクが下側に小さく表示されているのでそれをクリックで続行できる。
5. 実行が完了したら手順3で選択した場所に戻ると、リンクが追加されている
実行完了後に選択していたページを確認するとリンクが生成されている
間違い例
関数を使うときは画像のようにセルに=関数名()
と使う場合が多いですが、この関数をセルに指定して使用すると画像のようなエラーがでます。
エラー文:
Exception: You do not have permission to call setValues