javascript [Google Apps Script]Googleスプレッドシートをスクリプト操作してみた[初心者]

[Google Apps Script]Googleスプレッドシートをスクリプト操作してみた[初心者]

gas_topimage

普段Googleスプレッドシートをデータ管理のツールとして使用しています。
そこでGoogleスプレッドシートをExcelのVBAの様にスクリプトで操作したいと思いました。

Googleが提供しているGoogle Apps Scriptで可能なようです。
Google Apps Scriptとは

Googleが提供している Google Suiteを使いやすくしたり連携させたり出来るスクリプト開発環境。

スプレッドシート以外のカレンダーやドキュメント、 Gmail などと連携させた
スクリプトも作れるみたいですね。

記述言語はJavascriptがベースみたいなので始めやすいかも。

面白そうなので勉強のつもで触れてみたいと思います。

Google Apps Scriptの環境はChromeに拡張機能Google Apps Script を入れるだけのようです。

早速触ってみます。

Googleスプレッドシートを開きます。

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

新しいタブが開きそこにコードエディタが現れます。

ログ表示

コードエディタが開かれると以下のコードが記されています。
ロガーに”Hello World!!”表示されるみたいです。
function myFunction() {
var num = "Hello World!!";
Logger.log(num);
}

実行します。

何かが実行された表示はありましたがログが現れません。

[Ctrl]+[Enter]

ログが表示されます。

実行されたDATEと結果が表示されました。
“Hello World!!”
もきちんと表示されてます。

ファイルの名前を取得

開いているスプレッドシートのファイル名を取得してログに表示します。
function myFunction() {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log(activeSpreadsheet.getName());
}

解説
SpreadsheetApp.getActiveSpreadsheet()
開かれているスプレッドシートファイルを取得します。
activeSpreadsheet.getName()
スプレッドシートのファイル名を取得します。先ほどと同じく実行して[Ctrl]+[Enter]でログを出します。

ファイル名「血圧データ」と表示されました。

アクティブシートの名前を取得

開いているスプレッドシートのアクティブになってるシートの名前を取得します。

function myFunction() {
  var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = activeSpreadsheet.getActiveSheet();
  Logger.log(activeSheet.getName());
}
解説
activeSpreadsheet.getActiveSheet()

スプレッドシートファイルの開かれてるシートを取得します。

activeSheet.getName()
シートの名前を取得します。実行して[Ctrl]+[Enter]でログを出します。

開かれているアクティブなシートではなく、シートを指定したい場合はvar activeSheet = activeSpreadsheet.getSheetByName(‘SheetName_01’);

の様に.getSheetByName(シート名)と書くことで可能になります。

セルの値を取得

特定のセルの値を取得します。

function myFunction() {
    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var activeSheet = activeSpreadsheet.getSheetByName('SheetName_01');
    var cellPosition = activeSpreadsheet.getRange("C7");
    var cellValue = cellPosition.getValue();
    Logger.log(cellValue);

}
解説
activeSpreadsheet.getSheetByName(‘SheetName_01’)

情報を見たいシートをシート名で指定しました。

activeSpreadsheet.getRange(“C67”)
“C67″のセルを指定しました。

cellPosition.getValue()
指定したセルの値を取得します。

実行して[Ctrl]+[Enter]でログを出します。

スプレッドシートファイルの表示

ログ表示

セルに値を入力

指定したセルに文字を入力します。

function myFunction() {
    var str_Value = " Asia/Osaka";
    var str_Value2 = " Asia/Kanagawa";

    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var activeSheet = activeSpreadsheet.getSheetByName('SheetName_01');
    var setCell = activeSheet.getRange("B66");
    var setCell2 = activeSheet.getRange("B68");
    setCell.setValue(str_Value);
    setCell2.setValue(str_Value2);

}
解説
activeSheet.getRange(“B66”);
activeSheet.getRange(“B68”);

それぞれ “B66″と”B68″のセルを指定しました。

setCell.setValue(str_Value);
setCell2.setValue(str_Value2);

setValue()でセルに値を入力します。

実行後にスプレッドシートを確認します。

B66は”Asia/Osaka”、B68は”Asia/Kanagawa”に変わりました。

まとめ

基本的な操作を試してみました。

通常のjavascriptとそんなに違和感なく書けますね。

ローカルのファイルを扱えないのはデメリットに思う人もいるかと思いますが、
ウェブブラウザのコードエディタで完結してるので、
自宅ではデスクトップのWindowsPC、外出先ではMacBookの様に
場所や環境を気にすることなく扱えるのは機動的な生活環境の人には
メリットがあると思います。

何といってもスプレッドシート以外のGoogleのアプリサービスと連携が取れるのは良いですね。