手作業で作っていた納品書をGoogle Sheets APIで自動生成するようにしたら、Gmailで送れないファイルが生成されてしまった
納品書作成の手間を改善したかった
アクセサリーを店舗に納品する時に、いつも店舗指定のxlsxテンプレートに商品のリストと納品日を記載してメールで送信、というフローを行っていました。納品に限らず、請求書や各種手続きの書類などで結構あるあるなのではないでしょうか。
ファイルはGoogleDriveで管理していたので、ドライブ上でファイルをコピー→Googleスプレッドシートでリストと納品日を書き換えてメールで送信…とやっていたのですが、
- パターン化されてる商品と価格を毎回手入力してる
- 日付を入れる欄が複数あって面倒&見落としが起きる
などなどかなり非効率的だったので、最低限の情報入力でファイル作成を自動化するWebアプリを作りました。

情報としては納品日と、商品情報をテンプレートから引っ張ってきてサイズや数量を入力すれば良いので、必要な情報はこれで完結します。あとはGoogle Drive APIとGoogle Sheets APIでファイルのコピー&編集を実装できたので、もうこれで面倒なフローとおさらばだ…と感傷に浸っていました。
Gmailで送れない…
悲劇は納品書の送信時に起きました。下の画像は、Gmail上でGoogleDriveのファイルを挿入する機能のキャプチャです。

おわかりいただけますでしょうか…右下の 「添付ファイルとして追加」 ボタンがグレーアウトしているのです。
今回制作したシステムで作成した納品書だけは、何故かこの「添付ファイルとして追加」ができなくなっていました。
実は同じ手順じゃなかった
「xlsxファイルをコピーして編集する」 という作業フローをAPIで再現したつもりだったのですが、APIの方で作成されたデータはxlsxではなくGoogleSheet形式ということがあとから分かりました。
じゃあなんでGSheet形式だとファイルとして添付できないの?ということをGeminiに聞いてみたところ、GSheet形式は単一のファイルではなく共同編集などを前提としてDB上に配置されたデータなので、実態としてファイルがあるわけではない→添付すべきファイルが存在しないので、ファイルとして添付することができないという回答を得ました。理解はしたけど納得したくない…
今後やりたい対処
Google Drive APIのfiles.exportメソッドでエクセル形式のバイナリを作成することができるらしいので、一度GSheet形式で編集した後にExcel形式に変換するという手順を挟んでなんとか自動化を実現したいと思います…実現できたらまたここに追記します。
Discussion