Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

2018年8月9日木曜日

スプレッドシートURLから対象のシートを取得する


スプレッドシートのURLを渡してシートIDからシートを取得して返す例です

このようなスプレッドシートのURLがあって
var ss_url = https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートID


"gid=" で区切ったときの後半部分のシートIDを取得する
var sh_id = ss_url.split("gid=")[1];



以下のコード.gsスプレッドシートURLを設定して
get_sheet_by_url() を実行すると
対象シートのA1の値がログに出ます



コード.gs
function get_sheet_by_url() {
  var ss_url = "スプレッドシートURL";
  var sheet = get_sheet(ss_url);
  Logger.log(sheet.getRange("A1").getValue());
}


function get_sheet(ss_url) {
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sh_id = ss_url.split("gid=")[1];
  var shs = ss.getSheets();
  for (var i = 0; i < shs.length; i++) {
    if (shs[i].getSheetId() == sh_id) {
      break;
    }
  }
  var sheet = ss.getSheets()[i];
  return sheet;
}



処理をまとめて書いてsheetを返す例



コード2.gs
function getTargetSheet() {
  var ss_url = "https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートID";
  var ss = SpreadsheetApp.openByUrl(ss_url);
  var sheet_id = ss_url.split("gid=")[1];
  var sheets = ss.getSheets();
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getSheetId() == sheet_id) {
      break;
    }
  }
  var sheet = ss.getSheets()[i];
  return sheet;
}



厳密等価演算子(===)でやる場合

var sheetId = sheetUrl.split("gid=")[1];
はstringで返ってくるので、parseIntで整数値にする。

なぜ?
if (sheets[i].getSheetId() === parseInt(sheetId)) {
で数値同士で比較できるようにするため。


コード3.gs
function getTargetSheet() {
  var sheetUrl = "https://docs.google.com/spreadsheets/d/スプレッドシートID/edit#gid=シートID";
  var ss = SpreadsheetApp.openByUrl(sheetUrl);
  var sheetId = sheetUrl.split("gid=")[1];
  var sheets = ss.getSheets();
  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getSheetId() === parseInt(sheetId)) {
      break;
    }
  }
  var sheet = ss.getSheets()[i];
  return sheet;
}



Latest post

Googleドキュメントに見出しを追加したい

今回の例では、ドキュメントの末尾に「見出しD」 を追加します。 見出しA, B, C, Dのスタイルは、見出し3 ( HEADING3 ) に設定しています。  下記Code.gsの  GOOGLE_DOCUMENT_URL を設定して  addHeadingToEnd()  を...