プチ講座

google apps scriptを使ってみよう!!

プチ講座 投稿者画像  

どうも、最近google上でデータ管理を自動化する必要に駆られている小林です。

作業の自動化にあたりgoogle apps script 通称(GAS)を使用しています。

ちなみにGASですが、JavaScriptというプログラムを使ってファイルを操作するツールだと思って下さい。

Excelで言うマクロや、VBAのイメージです。

操作出来るファイルは、スプレッドシート(spreadsheet)やドキュメント(document)、フォーム(form)等、色々なものに使うことが出来ます。

 

という事で今回は、GASを使用したプログラムを始めてみよう!!

 

ここからはスプレッドシートの具体例を用いながら実際に使用してみます。

まずはスプレッドシートを作成します。現実味を出すために、出勤簿を作ってみました。

 

speadsheet作成

出勤簿作成しました!!

この、スプレッドシートですが、[出勤簿原本]と[2015/4]という2つのシートで出来ています。

通常、最初にこのファイルを開くと、一番左にある[出勤簿原本]が開きます。

これを[2015/4]が最初に開くようにしたい。

というのが今回のテーマです。

つまり、入力する月度のシートが自動で開くようにしたいのです。

 

この機能をGASを使って作っていきます。

今回は何と、簡単2ステップ!!

その1・・・スクリプトエディタを起動

GASはJavaScriptでコードを書きますので、コードを書く準備を行います。

先程作成したファイル上部にある、「ツール」から「スクリプトエディタ」をクリックします。

エディタ選択画面

スクリプトエディタを選択

するとスクリプトを作成する画面が開きます。

今回は、空のプロジェクトをクリックして作成します。

プロジェクトを作成すると、スクリプトエディタが起動しコードが入力できるようになります。

 

スクリプト作成画面

空のプロジェクトを作成

スクリプトエディタ画面

ついにコード入力が!!

 

 

 

ここからコードを入力していきます。

 

 

その2・・・コード入力[onOpen()]

空のプロジェクトを作成すると、最初にfunction myFunction()という関数が出来ます。

このmyFunction部分をonOpenに書き換えます。

通常入力したコードを使う場合は、配置したボタンにコードの割り当てをしたり、トリガーと呼ばれるコードの実行タイミングの設定を行うのですが、

onOpenとして作成したコードはファイルが開かれたタイミングでコードの実行が行われます。

つまり、ファイルを開くと自動でやってくれる処理を作ることが出来ます。

そして、この中に自動でシートの選択を行うコードを記入します。

コード入力例

コードはこんな感じ

 

 

 

 

function onOpen() {

/*ファイル起動時自動呼出し onOpen()*/
var dateObj = new Date();
var month = dateObj.getMonth() + 1;
var year = dateObj.getYear();

/*当月のシートを開く ここから*/
if(dateObj.getDate() > 15){
month++;
}
var str = year+”/”+month;
SpreadsheetApp.setActiveSheet(SpreadsheetApp.getActiveSpreadsheet().getSheetByName(str));
/*当月のシートを開く ここまで*/
}

後はそのまま保存するだけで、次回起動時に自動で処理を行ってくれます。今回の場合は自動で[2015/4]のシートを開いてくれます。

コードの書き方さえ分かれば、簡単に出来そうですよね。

 

それでは、最後にコードの説明をしておきます。

最初の3行ですが、ファイルを開いた日のデータを取得しています。

var dateObj = new Date();

この部分で、変数dateObjに日付データのかたまりを入れています。

 

var month = dateObj.getMonth() + 1;

この部分でdateObjから何月かを取り出し、変数monthに入れます。

何月かを取り出す際に、1月少ない数字(4月なら3、7月なら6)が出てきますので後から1を足しています。

 

var year = dateObj.getYear();

この部分でdateObjから何年かを取り出し、変数yearに入れます。

 

そして、次のif文ですが、先ほどと同じ要領で何日かを取り出し、15日以降であれば月の数字に1を足すという処理をしています。

なぜこんな事をするかというと、この出勤簿は3/16 ~ 4/15までで4月度4/16 ~ 5/15までで5月度という風に考えています。

その為、3/16 ~ 3/31の間にファイルを開いた場合、4月度[2015/4]のシートを開きたいのでこの処理を入れています。

 

ここまでに取得した変数year(年)と変数month(月)を使って○○○○(年)/□□(月)というデータを変数strに入れます。

 

最後の行で、変数strに入っているのと同じ名前のシートを選択するという処理をしています。

 

コード自体は調べていく必要がありますが、ちょっとがんばって処理を作っておくと、その後はGAS任せにしておけるので作業の手間を省くことが出来ます。まだ使ったことが無い方は、この辺りから始めてみてはいかがでしょうか。