【Python・GAS】Python+GASで Google スプレッドシートを定期的にバックアップしつつ Slack に通知する仕組みを作ってみた!

はじめに

Google スプレッドシートは、事業の売上記録や顧客リスト、在庫管理など、さまざまな情報を管理するのに便利です。
しかし、誤って上書きしてしまったり、意図せず削除してしまうと、復旧が難しいケースもあります。
そこで今回は、Python と Google API を使ってスプレッドシートを定期的にバックアップし、さらに Slack で通知する仕組みを構築します。
ローカルやサーバーでの運用に対応し、毎日のデータ保全を自動化することが可能になります。

Python を使ってスプレッドシートを定期的にバックアップする理由と全体構成

小規模事業者や個人開発者にとって、スプレッドシートに記録されたデータは重要な資産。作業中の誤操作に備えるため、定期バックアップが安心です。
本記事では、Python スクリプトに加えて Google Drive API, Google Sheets API, Slack API を組み合わせ、ローカルでの定期実行とバックアップ、Slack 通知までをワンストップで自動化する構成をご紹介します。

必要な準備:Google API 認証・Python ライブラリ・Slack Webhook の設定

  • Google API の認証情報取得(Google Cloud Platform にて OAuth クライアントを作成)
  • Python ライブラリgoogle-auth, google-auth-oauthlib, google-api-python-client, requests(Slack 通知用) をインストール
  • Slack の Webhook URL を取得し、通知用に準備

OAuth2 の認証フローとトークン保存の処理を含む典型的なコード例は以下です。

from google.oauth2 import service_account
from googleapiclient.discovery import build
import requests

SCOPES = ['https://www.googleapis.com/auth/drive', 'https://www.googleapis.com/auth/spreadsheets.readonly']
creds = service_account.Credentials.from_service_account_file('credentials.json', scopes=SCOPES)
drive = build('drive', 'v3', credentials=creds)
sheets = build('sheets', 'v4', credentials=creds)
SLACK_WEBHOOK_URL = 'https://hooks.slack.com/services/...'

スプレッドシートを PDF または CSV でバックアップし、Drive に保存する方法

スプレッドシートをエクスポートする方法として、PDFCSV の形式でダウンロードし、自動で指定フォルダへ保存するパターンを紹介します。
ファイル名にはタイムスタンプを入れて整理性を向上。Drive API の利用でフォルダ操作も可能です。

import datetime

SPREADSHEET_ID = '...'
export_mime = 'application/pdf'
response = drive.files().export_media(fileId=SPREADSHEET_ID, mimeType=export_mime).execute()
filename = f'backup_{datetime.datetime.now().strftime("%Y%m%d_%H%M%S")}.pdf'
with open(filename, 'wb') as f:
    f.write(response)

Slack への通知とバックアップ成功チェックの自動化

バックアップ処理が成功したら Slack 通知を送ることで、状態把握がグッと楽になります。失敗時にはエラーメッセージ付きで通知する方法も紹介します。
Python の try/except を使った通知フローを記述します。

try:
    # バックアップ処理...
    msg = f'✅ スプレッドシートのバックアップ成功: {filename}'
except Exception as e:
    msg = f'⚠ バックアップに失敗しました: {e}'
requests.post(SLACK_WEBHOOK_URL, json={'text': msg})

定期実行の仕組み(cron または Windows タスクスケジューラでの設定例)

バックアップスクリプトを定期実行にするには下記のように動作環境がマッチした運用が可能なようにします。

cron(Linux/macOS) の登録例:毎日午前 2 時実行、ログを残す方法など

・Windows タスクスケジューラ を使った設定例(UI 操作・コマンドライン例)

おわりに

今回は、Python を活用して Google スプレッドシートを自動でバックアップし、Slack に通知する仕組みを構築しました。
一度セットアップすれば、日々の作業を自動で監視・保全してくれるため、データの安心感が格段に高まります。
この仕組みは、スプレッドシートに限らず Google Docs や Drive 内の他ファイルにも応用できます。ぜひ、自分の業務フローに合わせたカスタマイズに挑戦してみてください。

また、APIの仕様変更やうまく動作しないなどがありましたら、遠慮なくコメントまでお寄せください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です