GASを使用するなら必ず覚えるべき7つのUtilitiesのメソッド

Utilitiesとは

日付の書式設定やJSON操作などが行えるクラス。

例えばUtilities.formatDate()を使用すれば日付のフォーマットが以下のように簡単に行える。

function myFunction() {
  const now = new Date('2022-07-08 12:34:56')
  console.log(Utilities.formatDate(now, 'JST', 'yyyy-MM-dd HH:mm:ss'))
  // => 2022-07-08 12:34:56
}

この記事ではGASを使用するなら必ず覚えるべき7つのUtilitiesのメソッドについて解説している。

formatDate

冒頭でも記載した日付のフォーマット用のメソッド

前述のコードではJST(日本標準時)を使用したが、場合によってはGMT(グリニッジ標準時)を使用する。

function myFunction() {
  const now = new Date('2022-07-08 12:34:56')
  console.log(Utilities.formatDate(now, 'GMT', 'yyyy-MM-dd HH:mm:ss'))
  // => 2022-07-08 03:34:56
}

日付をフォーマットするだけならformatDateで問題ないが、日にちの加算などの処理が入る場合はライブラリに以下のIDで検索してDay.jsを追加して利用したほうが良いです。

1ShsRhHc8tgPy5wGOzUvgEhOedJUQD53m-gd8lG2MOgs-dXC_aCZn9lFB
Google Apps Script ライブラリの追加 Day.js
function myFunction() {
  const day = dayjs.dayjs('2022-07-08')
  console.log(day.add(1, 'day').format('YYYY/MM/DD'))
  // => 2022/07/09
}

formatString

sprintfのように文字列のフォーマットを行うことができる。

function myFunction() {
  console.log(Utilities.formatString('%6.2f', 1234))
  // => '1234.00'

  console.log(Utilities.formatString('%6s', 'foo'))
  // => '   foo'

  console.log(Utilities.formatString('%09d', 123))
  // => '000000123'
}

getUuid

ランダムのUUIDを生成する。

function myFunction() {
  console.log(Utilities.getUuid())
  // => 'd292746a-588c-43aa-99c3-084710a36724' (例)
}

parseCsv

CSVの文字列を配列に変換する。

function myFunction() {
  const csvString = "a,b,c\nd,e,f";
  const data = Utilities.parseCsv(csvString);
  console.log(data)
  // [ [ 'a', 'b', 'c' ], [ 'd', 'e', 'f' ] ]
}

newBlob

Blobオブジェクトを作成する。

base64Encode

文字列をbase-64でエンコードされた文字列にエンコードする。

base64Decode

base-64でエンコードされた文字列を元の文字列にデコードする。

function myFunction() {
  const blob = Utilities.newBlob('This is a pen.')
  console.log(blob.getBytes())
  // [ 84, 104, 105, 115, 32, 105, 115, 32, 97, 32, 112, 101, 110, 46 ]

  const encoded = Utilities.base64Encode(blob.getBytes())
  console.log(encoded)
  // VGhpcyBpcyBhIHBlbi4=

  const decoded = Utilities.base64Decode(encoded)
  console.log(Utilities.newBlob(decoded).getDataAsString())
  // 'This is a pen.'
}