結論
2つのMethodを組み合わせて取得します。
function getSheetcheck(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var SheetURL = ss.getUrl() + "#gid="+ sheets[1].getSheetId();
return SheetURL;
}
やりたいこと
シート番号 | シート名 | |
---|---|---|
0 | このシートについて | |
1 | 2017-08-31 | <-ここのURLをGASで取りたい |
2 | 2017-08-30 | |
3 | 2017-08-29 | |
4 | 2017-08-28 | |
5 | 2017-08-27 | |
6 | 2017-08-26 |
解説
「作業したいGoogleスプレッドシートファイルにある、特定のシートURLを取得したい」時、Class Sheetに適当なMethodないかなーと探してみたことありませんか?
「特定のスプレッドシートファイルへのURLを取得する」Methodはありますが、「スプレッドシートファイル『の、中にある特定のシート』へのURL」を一発で取得するMethodはありません。
そんな時は「スプレッドシートファイルのURL」と「扱いたいシートのID」を組み合わせて作ります。
必要な情報は
- 扱いたいスプレッドシートファイルを特定する手段
- 何番目のシートが必要なのか
の2つ。
1番目は、スプレッドシートファイルのメニューからスクリプトを作成した方1はSpreadsheetApp.getActiveSpreadsheet()
でクリアできます。
Standalone Scriptで作成した場合は名前かIDを使いましょう。
2番目は、スプレッドシートファイル内のシート一覧を取得して、返された配列の「何番目を必要とするか」を明示します。
「getSheets()で取得した配列の中から(今回の場合は)sheets[1]に対してgetSheetId()をかけてあげれば良い」となります。
最後に1番と2番を「#gid=」で接続してあげればおしまいです。
動作確認スクリプト
function getSheetcheck(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for(var i = 0;i < st.length;i++){
var SheetURL = ss.getUrl() + "#gid="+ sheets[i].getSheetId(); // <- 今回ほしい情報
Logger.log("No %s 's Name is %s",i,sheets[i].getName());
Logger.log("No %s 's SheetName is %s",i,sheets[i].getSheetName());
Logger.log("No %s 's ID is %s",i,sheets[i].getSheetId());
Logger.log("No %s 's URL is %s",i,SheetURL);
}
}
つぶやき1
getNameとgetSheetNameって何が違うんだっけ・・・
つぶやき2
今回のお題ドンピシャなブログエントリを発見いたしました。こちらの記事を貼ればよかったんじゃないかという噂ががが。
気にしたら負けなので今後もゆるゆる続けます。
-
Container-bound Scripts っていうらしいですね。 ↩