【GAS入門】読み込むスプレッドシートを取得・指定する方法

GAS
GAS
この記事は約5分で読めます。
スポンサーリンク

今回はGASの入門編第3弾ということで、読み込むスプレッドシートを取得・指定する方法をご紹介します。

GASでスプレッドシートを指定する方法

まずはスプレッドシートを指定する方法です。

スプレッドシートの「ツール」>「スクリプトエディタ」で開いた場合は、アクティブなスプレッドシート=元のスプレッドシートになるので、基本的に1つ目を使えばOkですが、方法としては3つあります。

①アクティブなスプレッドシートを取得する方法
var 変数 = SpreadsheetApp.getActive();
②URLを元にスプレッドシートを取得する方法
var 変数 = SpreadsheetApp.openByUrl(“URL”);
③スプレッドシートのIDを元に取得する方法
var 変数 = SpreadsheetApp.openById(“ID”);
function getSheetName() {
 // スプレッドシートを取得
 var sheet1 = SpreadsheetApp.getActive();
 var sheet2 = SpreadsheetApp.openByUrl("URL");
 var sheet3 = SpreadsheetApp.openById("ID");
 Logger.log(sheet1.getName());
 Logger.log(sheet2.getName());
 Logger.log(sheet3.getName());
}

実際にこのコードを入れて3つそれぞれを見比べてみましょう。

コードを貼り付けてURLとIDはそれぞれスプレッドシートのものを記入

IDは「https://docs.google.com/spreadsheets/d/xxxxxxxxxxx/edit#gid=1234567890」の赤字部分です。

「表示」>「ログ」からログを確認

データを確認

それぞれの取得の仕方で同じデータ(スプレッドシート名)を取得できていることがわかります。

Logger.log(データ)でそのデータを出力することができます。データが変数の場合は、変数に格納されているデータを確認することができます。
ちなみに上で「.getName」をつけているのは、そのままだとスプレッドシートの何を取得するのかが指定されていないため、取得したいデータとしてシート名を指定しています。

GASでスプレッドシート内のシートを指定する方法

続いてスプレッドシート内のシートを指定する方法について説明します。使うコードはこちら。

var 変数 = sheet1.getSheetByName(“test”);

function getSheetName() {
 // スプレッドシートを取得
 var sheet1 = SpreadsheetApp.getActive();
 var sheetName = sheet1.getSheetByName("test");
 Logger.log(sheetName.getName());
}

要は取得したスプレッドシート(sheet1)から「test」と言う名前のシートを取得しますよ、それをsheetNameと言う変数に入れ込みますよということですね。

ちなみにプログラミングにおける「=」は代入するという意味で、右側を左側に代入しますということになります。varはここではそういうルールを定義するよ〜という宣言をするための文字列、くらいに思ってもらえれば大丈夫です。

GASでシート内のセルを指定する方法

最後に、ここまでで取得してきたシートの中で、セルを指定する方法をご紹介します。使うコードはこちら。

function getSheetName() { 
 // スプレッドシートを取得
 var sheet1 = SpreadsheetApp.getActive(); 
 var sheetName = sheet1.getSheetByName("test");

 //セル名を指定する方法
 var getCell1 = sheetName.getRange("A1");
 
 //セルの範囲で取得する方法(A1 〜 C3まで)
 var getCell2 = sheetName.getRange("A1:C3");

 //行列で指定する方法(A1を指定する)
 var getCell3 = sheetName.getRange(1,1);

 //セルと取得する行数を指定する方法(A1から3行分取得)
 var getCell4 = sheetName.getRange(1, 1, 3);

 //セルと取得する行数・列数を指定する方法(A1から3列分、3行分取得)
 var getCell5 = sheetName.getRange(1, 1, 3, 3);

 Logger.log(getCell1.getValues());
 Logger.log(getCell2.getValues());
 Logger.log(getCell3.getValues());
 Logger.log(getCell4.getValues());
 Logger.log(getCell5.getValues());
}

スプレッドシートのデータ位置を確認

まずはどのセルを取得するかを確認します。今回はA1~C3までを使っていきます。

コードを貼り付ける

上記のコードを貼り付けます。なお今回は上から順に以下を取得しています。

  • A1セル
  • A1~C3
  • A1セル
  • A1~A3
  • A1~C3

デバッグ結果を見てみる

ログをみると、以下のように取得できているのがわかります。
ちなみに[]で囲われているものは配列と言い、行ごとにデータをまとめて取得して1つの箱の中に入れているような状態と思ってもらえればOkです。

ちなみに上で「.getValues()」をつけているのは、指定したセルの何を取得するかを指定するためで、データを配列で取得したい場合には「getValues()」を使います。1つのデータであれば「getValue」で問題ありません。

まとめ

いかがでしたか。

Google Apps Script(GAS)でセルを操作するには、

1. スプレッドシートのオブジェクトを取得
2. シートのオブジェクトを取得
3. セル範囲を指定したオブジェクトを取得
4. オブジェクトの内容を取得・変更

という4段階を踏む必要があります。

ただ、一度構文を作ってしまえばあとは毎回流用するだけなので、上記フローとソースコードはしっかり理解して使えるようにしておきましょう。