LoginSignup
6
7

More than 1 year has passed since last update.

002-Google スプレッドシートにある「左から2枚目の」シートURLがほしい

Last updated at Posted at 2017-08-12

結論

2つのMethodを組み合わせて取得します。

sample-code1.gs

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」を組み合わせて作ります。

必要な情報は
1. 扱いたいスプレッドシートファイルを特定する手段
2. 何番目のシートが必要なのか

の2つ。
1番目は、スプレッドシートファイルのメニューからスクリプトを作成した方1SpreadsheetApp.getActiveSpreadsheet()でクリアできます。
Standalone Scriptで作成した場合は名前かIDを使いましょう。

2番目は、スプレッドシートファイル内のシート一覧を取得して、返された配列の「何番目を必要とするか」を明示します。

「getSheets()で取得した配列の中から(今回の場合は)sheets[1]に対してgetSheetId()をかけてあげれば良い」となります。

最後に1番と2番を「#gid=」で接続してあげればおしまいです。

動作確認スクリプト

sample-code2.gs

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

今回のお題ドンピシャなブログエントリを発見いたしました。こちらの記事を貼ればよかったんじゃないかという噂ががが。

気にしたら負けなので今後もゆるゆる続けます。


  1. Container-bound Scripts っていうらしいですね。 

6
7
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
6
7