freeeの開発情報ポータルサイト

Google Docs API を使った手順書の自動化

こんにちわ。freee でコアエンジンという金融機関とのデータ連携部分を担当するチームに所属している mine です。 今日は「アウトプット→思考デー」ということで、普段の業務でのちょっとした困り事を解決してみました。

本番作業手順書

freee では本番環境でのオペミスを撲滅するため、本番環境で作業を行う場合は必ず手順書を作成し、事前準備・自己管理を行っています。 この本番作業手順書は作業種類ごとにテンプレートが用意されていて、所定の Google Form から必要事項を記入するとテンプレートを元に最低限必要な情報が埋められた作業手順書が自動で作成される仕組みが既に作られています。

通常の頻度で本番作業を実施する分には何も問題がないのですが、コアエンジンチームでは金融機関とのAPI接続を今後100近くリリースすることになっており、同じようだけどちょっと違う手順書をリリースごとに作成する作業が煩雑になってしまっていました。 そこで、Google Docs API を使って手順書の作成を完全に自動化してしまおうというものです。

Google Docs API とは?

Google スプレッドシートを操作する Google Sheets API は使ったことがある方も多いと思います。 Google Docs API はその名の通り、Google ドキュメントを操作するための API となります。

現時点では API v1 ということで、必要最低限な仕組みだけ用意されている感じです。 リファレンスの Overview を見てもらえばわかりますが、ドキュメントを作成する create コマンド、取得する get コマンド、更新する batchUpdate コマンドだけです。

実際に使ってみる

OAuth での認証については一般的な Google の API と同じですし、create / get コマンドについてはわかりやすいと思いますので、今回は batchUpdate コマンドを使ってみます。

例えば最終的に作りたい手順書が下記のようなものだったとします。

作りたい手順書のスクリーンショット。手順ごとに内容が箇条書きされている。1つめの項目は確認項目がアルファ銀行、ベータ銀行、ベータ銀行(法人)、ガンマ銀行とある
作りたい手順書

ここで、アルファ銀行〜ガンマ銀行まではそのときどきで異なる金融機関が入る上に件数もまちまちだったりします。

  var documentId = 'xxxx'

  var requests = []
  for (var i in banks) {
    requests.push({
      'insertText': {
        'location': {
          'index': startIndex
        },
        'text': banks[i] + '\n',
      }}, {
        'createParagraphBullets': {
          'range': {
            'startIndex': startIndex,
            'endIndex':  endIndex
          },
          'bulletPreset': 'BULLET_DISC_CIRCLE_SQUARE',
        }
      }
    )
  }
  Docs.Documents.batchUpdate({'requests': requests}, documentId)

startIndex の取得にひとくせあったり、 batchUpdate は基本上から順に適用されるため渡す順番を気にしたりと、ありますがプログラムでドキュメントを自動的に作成することができます。

まとめ

リスト以外にもドキュメントで使われるような一通りのものは作成可能です。 Requests  |  Google Docs API  |  Google Developers

また、GAS での実装例が少ないですが以下に公式 (?) のサンプルがあります。 github.com

自動的にドキュメントを生成する機会の多い方は是非試してみてください。Hack Everything★