🍣

Google スプレッドシートの更新をGitHubに通知する

2023/04/27に公開

概要

Google Apps Scriptを用いて、Googleスプレッドシートが更新された際、GitHubに通知を送る方法を調べました。合わせて、StrapiやContentfulからGitHubに通知を送る方法も調べたので、備忘録として記録します。

Google Apps Script

以下のようなスクリプトを用意することで、スプレッドシートの更新をGitHubに通知できました。

const token = "ghp_xxx"
const owner = "yyy"
const repo = "zzz"
const event_type = "aaa"

function postSheetChange() {

  const headers = {
    "Accept": "application/vnd.github+json",
    "Authorization": `Bearer ${token}`,
    "Content-Type": "application/json"
  }

  var payload = JSON.stringify({
    event_type
  });

  var requestOptions = {
    method: 'POST',
    headers,
    payload,
  };

  UrlFetchApp.fetch(`https://api.github.com/repos/${owner}/${repo}/dispatches`, requestOptions)
}

トリガーの設定方法などは以下の記事が参考になりました。

https://businesschatmaster.com/slack/spreadsheet-change-notification

なお、Googleスプレッドシートの更新の都度、GitHubへの通知が行くので、GitHub Actionsのほうで、以下のようなconcurrencyを設定しておくほうがよさそうです。

または、トリガーを特定のセル(列)が更新された時だけ、などにすることも考えられます。

name: Build Test

concurrency:
  cancel-in-progress: true

on:
 repository_dispatch:
   types:
     - update_content
jobs:
 build:
   runs-on: ubuntu-latest
   steps:
     - name: checkout
       uses: actions/checkout@v3
   ...

Strapi

Strapiのwebhookでは、bodyをカスタマイズできないため、以下のようなプロキシサーバを立てる必要があるようです。

https://github.com/badsyntax/strapi-webhook-actions-proxy

Contentful

Contentfulでwebhookを使用する方法はシンプルでした。以下の記事などが参考になりました。

https://qiita.com/akitkat/items/3adcbafc4eeabaa6470b

まとめ

Headless CMSでのwebhookの利用において参考になりましたら幸いです。

Discussion