スプレッドシートの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.gsfunction 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.gsfunction 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;
}
|