Google Apps Scriptを使ってみる

Googleの提供するサービスをJavaScriptベースのスクリプト言語で操作するためのプログラム環境「Google Apps Script」を使ってみたのでメモ。

使い方

今回はスプレッドシートの内容を操作してみたいと思います。
新しくスプレッドシートを作成します。

get-started-with-google-apps-script01

ツール > スクリプト エディタ を選択します。

get-started-with-google-apps-script02

ブラウザ上でエディタが開かれるので、エディタ上で以下のように記述してみます。

function myFunction() {
  Browser.msgBox('test');
}

入力が完了したらファイル > 保存 を選択します。
以下のようなポップアップが表示されるので、プロジェクト名を入力してOKを選択します。

get-started-with-google-apps-script03

保存が完了しました。
入力した処理を実行する場合は、先ほど記述した関数「myFunction」を選択して、実行アイコンをクリックします。

get-started-with-google-apps-script04

初めて実行したときには、以下のようなアラートが表示されます。

get-started-with-google-apps-script05

続行すると、許可のリクエストが表示されるので、問題なければ許可をクリックしてください。

get-started-with-google-apps-script06

スプレッドシートに戻ると、ダイアログボックスが表示されたのが確認できました。

get-started-with-google-apps-script07

Browser.msgBox(String) OKボタンのみのダイアログボックスをポップアップで表示。

 

スプレッドシートの値取得

スプレッドシートにいくつかデータを入力してみます。

get-started-with-google-apps-script08

エディタに戻って、内容を以下に書き換えます。

function myFunction() {
  var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの選択
  var value = spread.getSheets()[0].getRange(2, 1).getValue(); // 指定したセルの値取得
  Browser.msgBox(value); // ダイアログボックスでの表示
}

実行してスプレッドシートに戻ると、A2番目の値がダイアログボックスで表示されました。

get-started-with-google-apps-script09

getActiveSpreadsheet() 現在アクティブなスプレッドシートを返す。
getSheets() 指定したスプレッドシートの全てのシートを取得。
getSheets()[0]の場合、1番目のシートを取得。
getRange(Range) 指定した範囲を返す。
Rangeは’A1’のように指定するか、行と列それぞれの値を「,」で区切って指定。
getValue() 範囲の左上のセルの値を返す。

 

先ほどはアクティブなスプレッドシートから取得しましたが、スプレッドシートのURLを指定して、そこから値を取得することもできます。
以下のように入力して実行をクリックします。

function myFunction() {
  var spread = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/xxxxx'); // スプレッドシートの選択
  var value = spread.getSheets()[0].getRange('A5').getValue(); // 指定したセルの値取得
  Browser.msgBox(value); // ダイアログボックスでの表示
}

A5の値がダイアログボックスで表示されました。

get-started-with-google-apps-script10

openByUrl(url) 指定されたURLのスプレッドシートを開く。

 

複数のセルを指定して、まとめて値を取得することもできます。
以下のように入力して実行をクリックします。

function myFunction() {
  var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの選択
  var values = spread.getSheets()[0].getSheetValues(2, 1, 7, 2); // 指定した範囲のセルの値取得
  Logger.log(values); // 取得した値をログに表示
}

今回はダイアログボックスではなくログに表示するようにしました。
ログを確認する場合、エディタの 表示 > ログ を選択します。

get-started-with-google-apps-script11

指定した範囲の値が配列で入っているのが確認できました。

get-started-with-google-apps-script12

getSheetValues(startRow, startColumn, numRows, numColumns) 指定した範囲のセルの値を配列で返す。
Logger.log(data) デバッグ用のログにdataを書き込む。

 

スプレッドシートへの書き込み

先ほど取得した値を別のセルに書き込んでみます。

function myFunction() {
  var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの選択
  var values = spread.getSheets()[0].getSheetValues(2, 1, 7, 2); // 指定した範囲のセルの値取得
  var startRow = 2; // 書き込みを開始する行
  var startCol = 4; // 書き込みを開始する列
  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      spread.getSheets()[0].getRange((startRow + i), (startCol + j)).setValue(values[i][j]); // 指定したセルに値を書き込む
    }
  }
}

6~10行目が書き込みを行う記述で、行と列でそれぞれfor文を回して、各セルに書き込みを行うようにしています。

保存して実行をクリックすると、A2~B8の値をD2に書き込むことができました。

get-started-with-google-apps-script13

setValue(value) 指定したセルに値を設定する。

 

最後の行・列を取得する

シート内で値の入っている最後の行数や列数を取得してみます。
セルの範囲を指定する際に使うと便利です。

まずは最後の行数を取得してみます。

function myFunction() {
  var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの選択
  var lastRow = spread.getSheets()[0].getLastRow(); // 最後の行数を取得
  Browser.msgBox(lastRow); // ダイアログボックスでの表示
}

最後の行数をダイアログボックスで表示できました。

get-started-with-google-apps-script14

getLastRow() セルに値の入っている最後の行数を返す。

 

次に最後の列数を取得してみます。

function myFunction() {
  var spread = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの選択
  var lastCol = spread.getSheets()[0].getLastColumn(); // 最後の列数を取得
  Browser.msgBox(lastCol); // ダイアログボックスでの表示
}

最後の列数をダイアログボックスで表示できました。

get-started-with-google-apps-script15

getLastColumn() セルに値の入っている最後の列数を返す。

 

今回は基本的な使い方を試してみましたが、他にもできることはたくさんあるみたいなので、またそのうち試してみたいと思います。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年4月
 123456
78910111213
14151617181920
21222324252627
282930