[GAS] スプレッドシートの値、取得・書き込みを行う

はじめに

GASとは「Google Application Script」の頭文字をとったもので、Googleが提供している各サービスをこのスクリプトを使い、プログラムする事でこれまでになかった機能を作ったり、作業を簡易化する事が出来る様になります。

よく使われるサービスとしては、GoogleDrive ・ Gmail等でしょうか。これらをGASを使ってプログラムを組む事で連携させる事が可能になります。

JavaScriptをベースとしたプログラミング言語で、JavaScriptと言ってもバージョンが幾つかあり、現時点(2019年)でのネイティブはES6ぐらいでの開発が一般的かと思います。

GASではJavaScript1.6を採用している様ですので、使える構文や仕様が限られますが、十分かと思います。また、TypeScriptからコンパイルする事がオススメされています。

スプレッドシートの基本操作

GAS入門としてはスプレッドシート(Microsoft Excelみたいな物)のコントロールです。

スプレッドシートの準備

新規スプレッドシート作成

Google Driveで任意のディレクトリで新規スプレッドシートを作成します。

名前も任意の名前にします。この作成したスプレッドシートを操作するスクリプトを作成して行きます。

ボタンを設置する

GASではトリガー(Event)があり、スプレッドシートの変更や保存等を感知して発火する仕組みがあるのですが、今回はボタンをクリックをトリガーにしてスクリプトを実行して行きます。

ツールバーから[挿入]→[図形描画]をクリックしてエディターを開きます。

エディターでボタンの様な図形を作成し、スプレッドシートに貼り付けたら準備完了です。

スクリプトを作成する

ツールバーの[ツール]→[スクリプトエディタ]を開きます。

このスプレッドシートに関連付けられたスクリプトが自動的に生成されます。

トリガーを設定する

スクリプトエディタを開くと、初期状態で空のmyFunction()関数があります。この関数にトリガーを設定します。

スプレッドシートに戻り、図形のメニューからスクリプト作成を開きます。


これでスクリプトの用意とトリガーの設定が終わりました。 次はスクリプトエディタからスクリプトを記述して行くだけです。

スクリプトで取得・書き込み

指定のセルを取得する 1

function myFunction() {
  
  var app = SpreadsheetApp.getActive();
  var sheet = app.getSheetByName("シート1");
  
  var data = sheet.getRange("A2").getValue();
  
  Logger.log(data); // りんご
  
}

指定のセルを取得する 2

function myFunction() {
  
  var app = SpreadsheetApp.getActive();
  var sheet = app.getSheetByName("シート1");
  
  var data = sheet.getRange(2, 1).getValue();
  
  Logger.log(data); // りんご
  
}

指定範囲のセルを全て取得 1

function myFunction() {
  
  var app = SpreadsheetApp.getActive();
  var sheet = app.getSheetByName("シート1");
  
  var data = sheet.getRange("A2:B4").getValues();
  
  Logger.log(data); //array [[りんご, 10.0], [いちご, 16.0], [ぶどう, 24.0]]
  
}

指定範囲のセルを全て取得 2

function myFunction() {
  
  var app = SpreadsheetApp.getActive();
  var sheet = app.getSheetByName("シート1");
  
  var data = sheet.getRange(2, 1, 3, 2).getValues();
  
  Logger.log(data); //array [[りんご, 10.0], [いちご, 16.0], [ぶどう, 24.0]]
  
}

指定セルに値を挿入する

function myFunction() {
  
  var app = SpreadsheetApp.getActive();
  var sheet = app.getSheetByName("シート1");
  
  sheet.getRange("A2").setValue("林檎");
  
}

コメント

このブログの人気の投稿

Qt ウィンドウのあれこれ

Qt setWindowFlagsについて

Qt レイアウト 余白の処理