Day 174|Box認可フロー突破と未処理判定ロジックの雛形づくり

こんにちは、こんです🦊
100日チャレンジ2回目の**Week 11 / Day 3(通算 Day 174)**です。

昨日(Day 173)は、BigQueryのスキーマを確定し、Box OAuthアプリのクライアントID/シークレットを登録しました。今日はその続きを実装し、Box認可フローの突破 → 実フォルダのファイルリスト取得 → 未処理判定の雛形 までを進めました。


🎯 今日のゴール

  • GASでOAuth2認可フローを通し、アクセストークン/リフレッシュトークン取得

  • Boxフォルダ内のファイル一覧を取得(名前・ID・更新日を軽量に)

  • 処理済みレジストリを使った「未処理ファイルだけ読む」ロジックの雛形作成


🔧 実装ログ

1) Box OAuth認可フロー

  • GASのログに出力された認可URLをクリック → Boxログインで承認

  • コールバック関数 authCallback() が正常に動き、アクセストークン/リフレッシュトークンが保存されることを確認

  • service.hasAccess() が true を返すようになり、APIコール可能な状態に到達

👉 これで「Boxに正しくつながる」第一関門を突破しました。


2) フォルダリスト取得

function listFilesInFolder(folderId) {
  const svc = getBoxService_();
  if (!svc.hasAccess()) throw new Error("認証が必要です");
  const url = `https://api.box.com/2.0/folders/${folderId}/items?fields=name,id,modified_at`;
  const res = UrlFetchApp.fetch(url, {
    headers: { Authorization: `Bearer ${svc.getAccessToken()}` }
  });
  return JSON.parse(res.getContentText()).entries;
}
  • レスポンスを entries 配列として受け取り、ファイル名・ID・更新日を抽出

  • 実際に returns/ フォルダと tsort/ フォルダを指定して、想定通りのCSVリストが取得できました


3) 未処理判定の雛形

  • 処理済みfile_idをScript Propertiesに記録

  • listFilesInFolder() で取得したリストと突合し、未処理のものだけ返す仕組み

擬似コード:

function listNewCsvFiles(folderId) {
  const processed = JSON.parse(PropertiesService.getScriptProperties().getProperty("PROCESSED_IDS") || "[]");
  const files = listFilesInFolder(folderId);
  const newFiles = files.filter(f => !processed.includes(f.id) && f.name.endsWith(".csv"));
  return newFiles;
}

👉 これで「毎朝、新しいCSVだけを拾う」パターンの基盤が整いました。


💡 学び

  • Box APIはfields指定が肝:余計なフィールドを省くことでレスポンスが軽くなり、GASの実行時間節約に直結。

  • 未処理判定はfile_id基準が鉄板:ファイル名や日時よりも一意性が高く、重複処理のリスクを最小化できる。

  • OAuth突破でようやく“動かせる土俵”に立てた感覚:昨日までは机上の設計、今日は初めてデータが動く瞬間に立ち会えた。


🔭 明日の予定(Day 175)

  • files/{file_id}/content を叩いてCSV本文を取得

  • Utilities.parseCsv() → BigQuery.Tabledata.insertAll() の一連パイプを実装

  • 最初の「返品CSV → ec_returnsテーブル」ストリーミング挿入テストを成功させる


✍️ まとめ

Day 174は、Box認可フローを突破し、未処理ファイル判定の仕組みを動かす ところまで進めました。これでいよいよ明日は「Box→BQのパイプ」を実際に通す日。

止まらないデータ基盤に向けて、パイプラインの“幹”が少しずつ形になってきました。


#100日チャレンジ #Week11 #Day174 #DX実験室
#BoxDataWeaver #BoxAPI #BigQuery #GoogleAppsScript #データ基盤 #業務改善

いいなと思ったら応援しよう!