AIとGoogleスプレッドシートを繋ぐと、表づくりが「言うだけ」で終わります。 1,000行の表も、色分けも、プルダウンも、あなたはセルを1つも触りません。 手を動かすのは最初の1回、Googleに「このMacを許可します」と登録するところだけです。
実際にこの手順で作ったものです。数字は実測値です。
難しそうに見えて、やっていることは「AIがGoogleに直接データを渡す」だけです。
ポイントは AIが画面をクリックしていないことです。 ブラウザでシートを開いてセルに打ち込むのではなく、Googleの受付窓口にデータをそのまま渡します。 だから速いし、日本語も絵文字も崩れません。
お店に例えると、画面操作は店頭に並んで注文する方法、窓口(API)は業者用の裏口で直接やり取りする方法です。同じ店に同じ注文をしていますが、裏口のほうが速くて確実です。
この先「API」という言葉が何度か出てきますが、ぜんぶ「Googleの裏口」と読み替えて構いません。意味を正確に覚える必要はありません。
以前、AIに画面操作でシートへ入力させたとき、日本語のセルが半角部分しか残らないことがありました。当時はそれを「AIの限界」だと思っていましたが、原因は方法のほうでした。画面操作だと日本語入力(変換)が挟まるためです。
窓口経由に切り替えたら、長文の日本語も絵文字🍣も全角記号も、一字も欠けずに入りました。AIが何かを苦手そうにしていたら、道具のせいにする前に「別のやり方はない?」と聞いてみてください。
ここから先、手を動かすのはこの3つです。残りは全部AIがやります。
my-gws)gws-desktop などダウンロードフォルダに client_secret_….json というファイルが落ちていれば完了です。中身は開かなくて構いません。
このアプリからGoogleアカウントへのアクセスをリクエストされています。デベロッパーを信頼できる場合にのみ続行してください。
詳細 / 安全なページに戻る
壊れていません。自分で作ったアプリをGoogleの審査に出していないだけで、全員に出ます。作ったのは自分なので、進んで大丈夫です。
「詳細」を押しても先に進めないときは、④のテストユーザーに自分のGmailが入っているか確認してください。
「クライアントシークレット」という文字列が出ています。これは鍵そのものです。
この画面をスクショしてAIに送らない。チャットに貼らない。JSONを落としたら、画面は閉じて構いません。
AIに手伝ってもらうときも「JSONを落とした」とだけ伝えれば十分です。AIはファイルを置くだけで、中身は読みません。
JSONを落としたら、AIにそのままこう言います。
Googleスプレッドシートと繋いで、AIから読み書きできるようにして。 認証のJSONはダウンロードフォルダに落としてあります
AIが道具を入れ、鍵のファイルを安全な場所へ移し、ログイン用のコマンドを実行します。 しばらくするとブラウザが開くので、自分のGmailを選んで「許可」を押してください。
ブラウザに成功の表示が出て、AIが「繋がりました」と言えば完了です。ここまでが準備の全部です。
止まっているわけではありません。ブラウザでの許可を待っている状態です。
表示されたURLをドラッグで全部選んでコピーし、ブラウザに貼れば進みます。
URLは途中で折り返して表示されます。手で打ち直さないでください。
途中の localhost:54226 のような数字を1文字読み違えるだけで「接続が拒否されました」と出ます。実際に一度そうなりました。
テスト用のシートを新しく作って、日本語と絵文字を書き込んでみて
このCSVと同じ列で新しいシートを作って、全部流し込んで。 状態の列はプルダウンにして、「公開」は緑、「下書き」は青で行ごと色分けして
WordPressの公開記事を全部読んで、このシートに追記して
公開日の列をC列に移して、記事URLは一番右に持っていって
シートを開いて、日本語も絵文字も一字も欠けていなければ合格です。1,000行でも数分で終わります。
いきなり本番のシートで試さないでください。まずテスト用のシートを1枚作って、そこで確かめると安全です。
できあがりは、いつものスプレッドシートです。特別な画面はありません。
Google Cloud Consoleの画面は、手順1で1回開いたきり、二度と開きません。普段使うのはスプレッドシートだけです。
ここから先は応用です。繋がっただけで満足せず、自動で回るところまで行くと世界が変わります。
「週に1回コマンドを打つ」は必ず忘れます。 Macには「毎週この時刻にこれを実行する」という予定表の機能があるので、そこに登録してもらいます。 その時刻にMacが寝ていても、次に起きたときに実行されます。
この更新作業を、毎週月曜の朝9時に自動で動くようにして
AIが登録を終えたら「いま試しに動かして」と頼んでください。シートが更新されれば成功です。あとは何もしなくても、毎週勝手に新しくなります。
スプレッドシートの中に更新ボタンを置く方法(Google Apps Script)も試しました。結果、こちらは断念しています。
理由は、ボタンを押すとGoogleのサーバーからデータを取りに行くのですが、レンタルサーバー側の防御機能が、Googleからのアクセスを一律で止めていたためです。自分のMacからは普通に取れるのに、です。
相手が自分のサーバーならMacから取りに行く。相手もGoogleのサービス(Search Console・GA4・ドライブ)ならシートのボタンでよい ── この使い分けだけ知っておくと、無駄に悩まずに済みます。
接続テスト
WordPress : ✗ HTTP 403
403 Forbidden — You don't have permission to access this resource.
SearchConsole : ✗ 403
Google Search Console API has not been used in project 143826298809 before or it is disabled.
シート書き込み : OK(41行)
403 は「あなたには許可していません」という意味の番号です。壊れたのではなく、断られています。
そして下の「アクセス権が必要です」を押しても解決しませんでした。Apps Scriptが裏で使っているプロジェクトは、持ち主でも管理画面を触れない仕様だからです。
プロジェクトに対する追加のアクセス権が必要です:143826298809
アクセスのリクエスト
ここで粘らず、Mac側の自動実行に切り替えました。結果としてそちらのほうが安定しています。
おまけです。バラバラだったものを1枚にまとめると、見えていなかったものが出てきます。
一覧にしたら、まったく同じタイトルの記事が2本見つかりました。リライト版を「新しい記事」として公開していたためです。
旧記事のURLは新記事へ転送されていたので検索エンジンからは1本に見えていましたが、管理画面には2本残ったままでした。
気づいていなかった重複は、一覧にすると出てきます。これが表を作る副産物としての価値です。
example.com がサイトA、example.com/shop は別のサイトB、という構成でした。
片方だけ数えて53件と386件を取り違えました。
記事数が思っていた数と違ったら、まずサイトの構成を疑ってください。AIに「このドメインにいくつサイトが入ってる?」と聞けば調べます。
Search Consoleは 記事URL#ketsuron のような、記事の途中へ飛ぶURLを別の行として返します。
そのままだと記事と結びつかず、73件が「表に無いページ」扱いになりました。
AIが # より後ろを落として照合するようにしたので、いまは99%結びついています。数が合わないときは、こういう「同じページの別の書き方」を疑ってください。
⌘+スペース で「ターミナル」と打つと開きます。この手順で自分で文字を書く場面はありません。貼って Enter を押すだけです。覚える必要はありません。「何が動いているか知りたい」ときだけどうぞ。
| やりたいこと | コマンド |
|---|---|
| 繋がっているか確認 | ~/.local/bin/gws auth status |
| シートの一覧 | gws drive files list --params '{"fields":"files(id,name)"}' |
| 範囲を読む | gws sheets spreadsheets values get --params '{"spreadsheetId":"ID","range":"タブ名!A1:F20"}' |
| セルに書く | gws sheets spreadsheets values update --params '{…,"valueInputOption":"USER_ENTERED"}' --json '{"values":[["下書き"]]}' |
| 色・数式・プルダウン | gws sheets spreadsheets batchUpdate --params '{"spreadsheetId":"ID"}' --json '{"requests":[…]}' |