読者です 読者をやめる 読者になる 読者になる

エンジニアはこわくない

エンジニアが困っていることを解決できるかもしれないサイト。みんなで問題を解決したい。ときどき雑記。

GAS(google app scritp)で日付を扱うライブラリを作成しました

f:id:tsujitaku50:20170117213517p:plain

※もとはQiitaに投稿した記事です。 はてなブログにも投稿することにしました。

最近業務でGoogleAppScritpを書くことが多くなってきました。

GoogleAppScritpを使用してGoogleSpreadSheetから情報を取得や加工してslack、チャットワークに投稿するというようなことをしています。

その中で日付情報を扱うことが多くいっそライブラリにして公開すれば、もしかしたら他の人も使えるのではないかと思ったので、 簡単な実用例、プロジェクトキー、ソースコードなどをQiitaにまとめていきます。

プロジェクトキー

M07BPTtQGkQNczN0EX3cSD6M0nmmJvv15

プロジェクトキーの使用方法に関しては Google Apps Scriptで作った関数類をライブラリ化しよう

「ライブラリを参照する方法」の部分を参照して下さい。

実用例

このような感じでスプレットシートで開発状況を管理していたとします。

スクリーンショット 2016-04-30 16.36.12.png

今回作成したライブラリは、リリース情報を取得してリリース日当日やリリース日の前日などに変換するライブラリです。

  • 実用例①(リリース日当日取得)
// スプレットシート情報取得
var ss = SpreadsheetApp.openById('スプレットシートのキー');
// シート情報取得
var s = ss.getSheetByName('シート名');
// 日付情報取得(A1 ~ A10までに日付情報が入っている想定)
// スプレットシートから情報取得した段階ではオブジェクト型
var dateObj = s.getRange('B2:B7');
// 日付情報をArrayに変換
var dateArray_v1 = this.convertDate(dateObj,0);

//dateArray_v1の中に [06/15, 06/26, 07/01, 07/05, 07/14, 07/27]が入っている状態
  • 実用例②(リリース日の3日前を取得)
// スプレットシート情報取得
var ss = SpreadsheetApp.openById('スプレットシートのキー');
// シート情報取得
var s = ss.getSheetByName('シート名');
// 日付情報取得(A1 ~ A10までに日付情報が入っている想定)
// スプレットシートから情報取得した段階ではオブジェクト型
var dateObj = s.getRange('B2:B7');
// 日付情報をArrayに変換(リリース日の3日前に変換して取得)
var dateArray_v2 = this.convertDate(dateObj,3);

//dateArray_v2の中に [06/12, 06/23, 07/-2, 07/02, 07/11, 07/24]が入っている状態
  • 実用例③(今日がリリース日か判定)
// スプレットシート情報取得
var ss = SpreadsheetApp.openById('スプレットシートのキー');
// シート情報取得
var s = ss.getSheetByName('シート名');
// 日付情報取得(A1 ~ A10までに日付情報が入っている想定)
// スプレットシートから情報取得した段階ではオブジェクト型
var dateObj = s.getRange('B2:B7');
// 日付情報をArrayに変換
var dateArray_v1 = this.convertDate(dateObj,0);

// dateArray_v1に入っている配列と今日の日付を比較
// リリース日が今日であればtrueを返す
if(isCompareDate(dateArray_v1)){
// リリース日だけに実行する処理を書く
}

ソースコード

おまけ

  • ライブラリを作成した後に気がついたのですがGoogle提供のGAS用ライブラリにmoment.jsというものがありました。
  • moment.js
    • Project Key : MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48
    • 主に日付や時刻操作系のライブラリが詰まっています。
    • http://momentjs.com/
広告を非表示にする