[{"data":1,"prerenderedAt":1579},["ShallowReactive",2],{"content-/gws-cli-setup-guide":3,"all-pages-for-dir":1577,"og-image-/gws-cli-setup-guide":1578},{"id":4,"title":5,"body":6,"category":1558,"description":1559,"extension":1560,"meta":1561,"navigation":128,"ogImage":1562,"path":1563,"project_name":1564,"published":1565,"publishedAt":1566,"seo":1567,"stem":1568,"tags":1569,"todo":1562,"unpublished":1565,"updatedAt":1562,"__hash__":1576},"pages/2026-06/2026-06-30/gws-cli-setup-guide.md","gws（Google Workspace CLI）のセットアップ手順 — Claude Code から自分のスプレッドシート・Gmail・カレンダーを叩く",{"type":7,"value":8,"toc":1523},"minimark",[9,14,53,57,61,270,277,280,347,356,363,373,416,419,441,444,451,454,466,473,482,575,582,589,603,606,627,630,636,643,647,650,658,661,732,735,738,761,765,768,774,777,828,835,839,846,851,901,905,908,922,929,985,992,1009,1012,1019,1032,1050,1053,1060,1064,1170,1173,1177,1180,1245,1251,1254,1260,1265,1271,1277,1281,1288,1295,1298,1310,1314,1321,1394,1397,1409,1413,1465,1468,1492,1495,1519],[10,11,13],"h2",{"id":12},"tldr","TL;DR",[15,16,17,39,42,45],"ul",{},[18,19,20,24,25,34,35,38],"li",{},[21,22,23],"code",{},"gws"," は Google が公開している Workspace 用 CLI（",[26,27,33],"a",{"href":28,"target":29,"rel":30},"https://github.com/googleworkspace/cli","_blank",[31,32],"noopener","noreferrer","googleworkspace/cli","）。「公式」とリポジトリにあるが、ヘルプには ",[21,36,37],{},"This is not an officially supported Google product"," と明記されている（公式リポジトリで配布されているが公式サポートは付かない）",[18,40,41],{},"一度設定すれば、ターミナルから自分のスプレッドシート・Gmail・カレンダー・Drive・Docs・Chat・Tasks 等を JSON で叩ける",[18,43,44],{},"Claude Code や Codex に「先月の経費スプレッドシートを読んでまとめて」「カレンダーの来週の予定をテーブルで」と日本語で頼むだけで、これらを叩いて結果を返してくれるようになる",[18,46,47,48,52],{},"設定で詰まるのは ",[49,50,51],"strong",{},"GCP プロジェクト側の OAuth クライアント作成"," の一箇所だけ。そこを画像なしの手順で通す",[10,54,56],{"id":55},"何ができるか最初の絵","何ができるか（最初の絵）",[58,59,60],"p",{},"セットアップ後、こういうコマンドが Claude Code やシェルから直接通る。",[62,63,68],"pre",{"className":64,"code":65,"language":66,"meta":67,"style":67},"language-bash shiki shiki-themes vitesse-light vitesse-light","# スプレッドシート読み取り\ngws sheets +read --spreadsheet \u003CSHEET_ID> --range 'Sheet1!A1:Z100'\n\n# 今日のカレンダー予定\ngws calendar +agenda --today --format table\n\n# 直近7日の未読メール\ngws gmail users messages list --params '{\"userId\": \"me\", \"q\": \"newer_than:7d is:unread\", \"maxResults\": 10}'\n\n# Drive にローカルファイルをアップロード\ngws drive +upload ./report.pdf --parent \u003CFOLDER_ID>\n\n# Chat スペースに投稿\ngws chat +send --space spaces/AAAAxxxx --text '日次レポート上がりました'\n","bash","",[21,69,70,79,123,130,136,156,161,167,194,199,205,232,237,243],{"__ignoreMap":67},[71,72,75],"span",{"class":73,"line":74},"line",1,[71,76,78],{"class":77},"sxvE3","# スプレッドシート読み取り\n",[71,80,82,85,89,92,96,100,103,107,110,113,117,120],{"class":73,"line":81},2,[71,83,23],{"class":84},"senZ8",[71,86,88],{"class":87},"sdGka"," sheets",[71,90,91],{"class":87}," +read",[71,93,95],{"class":94},"snbK4"," --spreadsheet",[71,97,99],{"class":98},"stQ0i"," \u003C",[71,101,102],{"class":87},"SHEET_I",[71,104,106],{"class":105},"sG7-3","D",[71,108,109],{"class":98},">",[71,111,112],{"class":94}," --range",[71,114,116],{"class":115},"sMJiu"," '",[71,118,119],{"class":87},"Sheet1!A1:Z100",[71,121,122],{"class":115},"'\n",[71,124,126],{"class":73,"line":125},3,[71,127,129],{"emptyLinePlaceholder":128},true,"\n",[71,131,133],{"class":73,"line":132},4,[71,134,135],{"class":77},"# 今日のカレンダー予定\n",[71,137,139,141,144,147,150,153],{"class":73,"line":138},5,[71,140,23],{"class":84},[71,142,143],{"class":87}," calendar",[71,145,146],{"class":87}," +agenda",[71,148,149],{"class":94}," --today",[71,151,152],{"class":94}," --format",[71,154,155],{"class":87}," table\n",[71,157,159],{"class":73,"line":158},6,[71,160,129],{"emptyLinePlaceholder":128},[71,162,164],{"class":73,"line":163},7,[71,165,166],{"class":77},"# 直近7日の未読メール\n",[71,168,170,172,175,178,181,184,187,189,192],{"class":73,"line":169},8,[71,171,23],{"class":84},[71,173,174],{"class":87}," gmail",[71,176,177],{"class":87}," users",[71,179,180],{"class":87}," messages",[71,182,183],{"class":87}," list",[71,185,186],{"class":94}," --params",[71,188,116],{"class":115},[71,190,191],{"class":87},"{\"userId\": \"me\", \"q\": \"newer_than:7d is:unread\", \"maxResults\": 10}",[71,193,122],{"class":115},[71,195,197],{"class":73,"line":196},9,[71,198,129],{"emptyLinePlaceholder":128},[71,200,202],{"class":73,"line":201},10,[71,203,204],{"class":77},"# Drive にローカルファイルをアップロード\n",[71,206,208,210,213,216,219,222,224,227,229],{"class":73,"line":207},11,[71,209,23],{"class":84},[71,211,212],{"class":87}," drive",[71,214,215],{"class":87}," +upload",[71,217,218],{"class":87}," ./report.pdf",[71,220,221],{"class":94}," --parent",[71,223,99],{"class":98},[71,225,226],{"class":87},"FOLDER_I",[71,228,106],{"class":105},[71,230,231],{"class":98},">\n",[71,233,235],{"class":73,"line":234},12,[71,236,129],{"emptyLinePlaceholder":128},[71,238,240],{"class":73,"line":239},13,[71,241,242],{"class":77},"# Chat スペースに投稿\n",[71,244,246,248,251,254,257,260,263,265,268],{"class":73,"line":245},14,[71,247,23],{"class":84},[71,249,250],{"class":87}," chat",[71,252,253],{"class":87}," +send",[71,255,256],{"class":94}," --space",[71,258,259],{"class":87}," spaces/AAAAxxxx",[71,261,262],{"class":94}," --text",[71,264,116],{"class":115},[71,266,267],{"class":87},"日次レポート上がりました",[71,269,122],{"class":115},[58,271,272,273,276],{},"これを Claude Code のセッション内で ",[21,274,275],{},"gws ..."," と直接実行できるので、「スプレッドシートを読んでサマライズして」「先方にメールの下書きを作って」のような依頼が一段で通る。",[10,278,279],{"id":279},"前提と必要なもの",[281,282,283,296],"table",{},[284,285,286],"thead",{},[287,288,289,293],"tr",{},[290,291,292],"th",{},"必要なもの",[290,294,295],{},"用途",[297,298,299,308,320,331,339],"tbody",{},[287,300,301,305],{},[302,303,304],"td",{},"Google アカウント（個人 or Workspace）",[302,306,307],{},"OAuth でログインするアカウント",[287,309,310,313],{},[302,311,312],{},"GCP（Google Cloud Platform）プロジェクト",[302,314,315,316,319],{},"OAuth クライアント発行の入れ物。",[49,317,318],{},"請求先カードの登録は不要","（無料枠で完結）",[287,321,322,328],{},[302,323,324,327],{},[21,325,326],{},"gcloud"," CLI",[302,329,330],{},"GCP プロジェクト操作とAPI有効化に使う",[287,332,333,336],{},[302,334,335],{},"Node.js + pnpm（または npm）",[302,337,338],{},"gws 本体のインストール",[287,340,341,344],{},[302,342,343],{},"ブラウザ",[302,345,346],{},"OAuth 同意画面の操作と認証で開く",[58,348,349,351,352,355],{},[21,350,23],{}," は非公式扱いなので、Google 公式の OAuth クライアント ID が同梱されていない。利用者が自分の GCP プロジェクトで Desktop app クライアントを作り、その ID とシークレットを gws に渡す必要がある。",[49,353,354],{},"ここが詰まりやすい唯一の箇所","で、本記事はここに紙幅を割く。",[10,357,359,360,362],{"id":358},"step-1-gws-本体をインストールする","Step 1: ",[21,361,23],{}," 本体をインストールする",[58,364,365,368,369,372],{},[21,366,367],{},"pnpm"," か ",[21,370,371],{},"npm"," でグローバルインストールする（どちらでもよい）。",[62,374,376],{"className":64,"code":375,"language":66,"meta":67,"style":67},"# pnpm の場合（筆者環境）\npnpm add -g @googleworkspace/cli\n\n# npm の場合\nnpm install -g @googleworkspace/cli\n",[21,377,378,383,396,400,405],{"__ignoreMap":67},[71,379,380],{"class":73,"line":74},[71,381,382],{"class":77},"# pnpm の場合（筆者環境）\n",[71,384,385,387,390,393],{"class":73,"line":81},[71,386,367],{"class":84},[71,388,389],{"class":87}," add",[71,391,392],{"class":94}," -g",[71,394,395],{"class":87}," @googleworkspace/cli\n",[71,397,398],{"class":73,"line":125},[71,399,129],{"emptyLinePlaceholder":128},[71,401,402],{"class":73,"line":132},[71,403,404],{"class":77},"# npm の場合\n",[71,406,407,409,412,414],{"class":73,"line":138},[71,408,371],{"class":84},[71,410,411],{"class":87}," install",[71,413,392],{"class":94},[71,415,395],{"class":87},[58,417,418],{},"確認:",[62,420,422],{"className":64,"code":421,"language":66,"meta":67,"style":67},"gws --version\n# gws 0.18.x\n# This is not an officially supported Google product.\n",[21,423,424,431,436],{"__ignoreMap":67},[71,425,426,428],{"class":73,"line":74},[71,427,23],{"class":84},[71,429,430],{"class":94}," --version\n",[71,432,433],{"class":73,"line":81},[71,434,435],{"class":77},"# gws 0.18.x\n",[71,437,438],{"class":73,"line":125},[71,439,440],{"class":77},"# This is not an officially supported Google product.\n",[58,442,443],{},"インストール先（Windows + pnpm 例）:",[15,445,446],{},[18,447,448],{},[21,449,450],{},"C:\\Users\\\u003CUSER>\\AppData\\Local\\pnpm\\gws",[58,452,453],{},"設定ディレクトリ（OS共通の論理パス）:",[15,455,456],{},[18,457,458,461,462,465],{},[21,459,460],{},"~/.config/gws/","（Windows では ",[21,463,464],{},"C:\\Users\\\u003CUSER>\\.config\\gws\\","）",[10,467,469,470,472],{"id":468},"step-2-gcloud-cli-を入れて-gcp-プロジェクトを準備","Step 2: ",[21,471,326],{}," CLI を入れて GCP プロジェクトを準備",[58,474,475,478,479,481],{},[21,476,477],{},"gws auth setup"," は内部で ",[21,480,326],{}," を呼ぶので、先に gcloud CLI を入れて自分の Google アカウントでログインしておく。",[62,483,485],{"className":64,"code":484,"language":66,"meta":67,"style":67},"# gcloud CLI のインストールは公式手順に従う\n# https://cloud.google.com/sdk/docs/install\n\n# 認証（ブラウザが開く）\ngcloud auth login\n\n# プロジェクト作成（任意の名前。例: gws-personal-2026）\ngcloud projects create gws-personal-2026 --name \"gws CLI personal\"\n\n# 作ったプロジェクトを active にする\ngcloud config set project gws-personal-2026\n",[21,486,487,492,497,501,506,516,520,525,550,554,559],{"__ignoreMap":67},[71,488,489],{"class":73,"line":74},[71,490,491],{"class":77},"# gcloud CLI のインストールは公式手順に従う\n",[71,493,494],{"class":73,"line":81},[71,495,496],{"class":77},"# https://cloud.google.com/sdk/docs/install\n",[71,498,499],{"class":73,"line":125},[71,500,129],{"emptyLinePlaceholder":128},[71,502,503],{"class":73,"line":132},[71,504,505],{"class":77},"# 認証（ブラウザが開く）\n",[71,507,508,510,513],{"class":73,"line":138},[71,509,326],{"class":84},[71,511,512],{"class":87}," auth",[71,514,515],{"class":87}," login\n",[71,517,518],{"class":73,"line":158},[71,519,129],{"emptyLinePlaceholder":128},[71,521,522],{"class":73,"line":163},[71,523,524],{"class":77},"# プロジェクト作成（任意の名前。例: gws-personal-2026）\n",[71,526,527,529,532,535,538,541,544,547],{"class":73,"line":169},[71,528,326],{"class":84},[71,530,531],{"class":87}," projects",[71,533,534],{"class":87}," create",[71,536,537],{"class":87}," gws-personal-2026",[71,539,540],{"class":94}," --name",[71,542,543],{"class":115}," \"",[71,545,546],{"class":87},"gws CLI personal",[71,548,549],{"class":115},"\"\n",[71,551,552],{"class":73,"line":196},[71,553,129],{"emptyLinePlaceholder":128},[71,555,556],{"class":73,"line":201},[71,557,558],{"class":77},"# 作ったプロジェクトを active にする\n",[71,560,561,563,566,569,572],{"class":73,"line":207},[71,562,326],{"class":84},[71,564,565],{"class":87}," config",[71,567,568],{"class":87}," set",[71,570,571],{"class":87}," project",[71,573,574],{"class":87}," gws-personal-2026\n",[58,576,577,578,581],{},"既存プロジェクトを使う場合は ",[21,579,580],{},"gcloud config set project \u003C既存プロジェクトID>"," だけで OK。",[10,583,585,586,588],{"id":584},"step-3-gws-auth-setup-でapi有効化を一括で済ませる","Step 3: ",[21,587,477],{}," でAPI有効化を一括で済ませる",[62,590,592],{"className":64,"code":591,"language":66,"meta":67,"style":67},"gws auth setup\n",[21,593,594],{"__ignoreMap":67},[71,595,596,598,600],{"class":73,"line":74},[71,597,23],{"class":84},[71,599,512],{"class":87},[71,601,602],{"class":87}," setup\n",[58,604,605],{},"このコマンドは内部で次を行う。",[607,608,609,614,617,620],"ol",{},[18,610,611,613],{},[21,612,326],{}," の存在と認証を確認",[18,615,616],{},"アクティブな GCP プロジェクトを確認",[18,618,619],{},"Workspace 系のAPI（Drive, Sheets, Gmail, Calendar, Chat, Docs, Slides, Tasks 等）をプロジェクトに対して一括有効化",[18,621,622,623,626],{},"OAuth クライアント作成を試みる → ",[49,624,625],{},"ここで止まる","（手作業が必要）",[58,628,629],{},"途中で次のようなメッセージが出る。",[631,632,633],"blockquote",{},[58,634,635],{},"OAuth client creation requires manual setup in the Google Cloud Console.",[58,637,638,639,642],{},"これは想定挙動で、ここから先は ",[49,640,641],{},"Cloud Console の Web UI で 2 つの設定"," をする必要がある。出力されたURLをそのまま開いてもいい。",[10,644,646],{"id":645},"step-4-oauth-同意画面oauth-consent-screenを設定する","Step 4: OAuth 同意画面（OAuth consent screen）を設定する",[58,648,649],{},"ブラウザで次を開く（プロジェクト ID を自分のものに置換）。",[62,651,656],{"className":652,"code":654,"language":655},[653],"language-text","https://console.cloud.google.com/apis/credentials/consent?project=\u003CYOUR_PROJECT_ID>\n","text",[21,657,654],{"__ignoreMap":67},[58,659,660],{},"設定内容:",[281,662,663,673],{},[284,664,665],{},[287,666,667,670],{},[290,668,669],{},"項目",[290,671,672],{},"値",[297,674,675,685,696,704,712,720],{},[287,676,677,680],{},[302,678,679],{},"User Type",[302,681,682],{},[49,683,684],{},"External",[287,686,687,690],{},[302,688,689],{},"App name",[302,691,692,695],{},[21,693,694],{},"gws CLI","（または好きな名前）",[287,697,698,701],{},[302,699,700],{},"User support email",[302,702,703],{},"自分の Google アカウントメール",[287,705,706,709],{},[302,707,708],{},"Developer contact information",[302,710,711],{},"自分のメール",[287,713,714,717],{},[302,715,716],{},"Scopes",[302,718,719],{},"この画面では追加しない（後で gws が要求する）",[287,721,722,725],{},[302,723,724],{},"Test users",[302,726,727,728,731],{},"自分の Google アカウントを ",[49,729,730],{},"必ず追加","（External + テスト中は test user 以外ログインできない）",[58,733,734],{},"「Save and continue」で最後まで進めて保存。",[58,736,737],{},"注意点:",[15,739,740,747,758],{},[18,741,742,743,746],{},"External で公開（Publish App）する必要はない。 ",[49,744,745],{},"Testing 状態のまま"," で使う",[18,748,749,750,753,754,757],{},"Testing 状態のままだと、OAuth トークンは ",[49,751,752],{},"7日で期限切れ","になる仕様。期限が切れたら ",[21,755,756],{},"gws auth login"," で再認証すれば良い（実用上はそこまで頻繁ではない）",[18,759,760],{},"個人で使う限りこれで十分。組織で配布したい場合は別途「Workspace ドメイン内 Internal」設定や検証申請が必要",[10,762,764],{"id":763},"step-5-oauth-クライアント-iddesktop-appを作る","Step 5: OAuth クライアント ID（Desktop app）を作る",[58,766,767],{},"ブラウザで次を開く。",[62,769,772],{"className":770,"code":771,"language":655},[653],"https://console.cloud.google.com/apis/credentials?project=\u003CYOUR_PROJECT_ID>\n",[21,773,771],{"__ignoreMap":67},[58,775,776],{},"手順:",[607,778,779,790,797,803,810,821],{},[18,780,781,782,785,786,789],{},"上部「",[49,783,784],{},"+ CREATE CREDENTIALS","」→「",[49,787,788],{},"OAuth client ID","」を選ぶ",[18,791,792,793,796],{},"Application type: ",[49,794,795],{},"Desktop app"," を選ぶ",[18,798,799,800,802],{},"Name: ",[21,801,694],{},"（任意）",[18,804,805,806,809],{},"「",[49,807,808],{},"CREATE","」を押す",[18,811,812,813,816,817,820],{},"ダイアログに ",[49,814,815],{},"Client ID"," と ",[49,818,819],{},"Client Secret"," が表示される",[18,822,823,824,827],{},"ダイアログ下部の「",[49,825,826],{},"DOWNLOAD JSON","」で JSON ファイルをダウンロードする",[58,829,830,831,834],{},"ダウンロードした JSON は ",[21,832,833],{},"client_secret_\u003C長い文字列>.apps.googleusercontent.com.json"," という名前で落ちてくる。",[10,836,838],{"id":837},"step-6-client_secretjson-を-gws-に渡す","Step 6: client_secret.json を gws に渡す",[58,840,841,842,845],{},"3つの方法のうち、お好みで。",[49,843,844],{},"筆者は方法B（JSON ファイル配置）が一番後でハマらず楽","だった。",[847,848,850],"h3",{"id":849},"方法-a-環境変数ci-やスクリプト向き","方法 A: 環境変数（CI やスクリプト向き）",[62,852,854],{"className":64,"code":853,"language":66,"meta":67,"style":67},"export GOOGLE_WORKSPACE_CLI_CLIENT_ID=\"\u003Cyour-client-id>\"\nexport GOOGLE_WORKSPACE_CLI_CLIENT_SECRET=\"\u003Cyour-client-secret>\"\ngws auth login\n",[21,855,856,877,893],{"__ignoreMap":67},[71,857,858,861,865,869,872,875],{"class":73,"line":74},[71,859,860],{"class":98},"export",[71,862,864],{"class":863},"s4oTP"," GOOGLE_WORKSPACE_CLI_CLIENT_ID",[71,866,868],{"class":867},"shFtX","=",[71,870,871],{"class":115},"\"",[71,873,874],{"class":87},"\u003Cyour-client-id>",[71,876,549],{"class":115},[71,878,879,881,884,886,888,891],{"class":73,"line":81},[71,880,860],{"class":98},[71,882,883],{"class":863}," GOOGLE_WORKSPACE_CLI_CLIENT_SECRET",[71,885,868],{"class":867},[71,887,871],{"class":115},[71,889,890],{"class":87},"\u003Cyour-client-secret>",[71,892,549],{"class":115},[71,894,895,897,899],{"class":73,"line":125},[71,896,23],{"class":84},[71,898,512],{"class":87},[71,900,515],{"class":87},[847,902,904],{"id":903},"方法-b-json-ファイルを所定の場所に置く推奨","方法 B: JSON ファイルを所定の場所に置く（推奨）",[58,906,907],{},"ダウンロードした JSON を以下のパスにリネームして配置する。",[15,909,910,916],{},[18,911,912,913],{},"Linux/macOS: ",[21,914,915],{},"~/.config/gws/client_secret.json",[18,917,918,919],{},"Windows: ",[21,920,921],{},"C:\\Users\\\u003CUSER>\\.config\\gws\\client_secret.json",[58,923,924,925,928],{},"ディレクトリが無ければ ",[21,926,927],{},"mkdir -p ~/.config/gws"," で作る。",[62,930,932],{"className":64,"code":931,"language":66,"meta":67,"style":67},"# Windows (Git Bash)\nmkdir -p \"$HOME/.config/gws\"\nmv \"$HOME/Downloads/client_secret_*.json\" \"$HOME/.config/gws/client_secret.json\"\n\ngws auth login\n",[21,933,934,939,954,973,977],{"__ignoreMap":67},[71,935,936],{"class":73,"line":74},[71,937,938],{"class":77},"# Windows (Git Bash)\n",[71,940,941,944,947,949,952],{"class":73,"line":81},[71,942,943],{"class":84},"mkdir",[71,945,946],{"class":94}," -p",[71,948,543],{"class":115},[71,950,951],{"class":87},"$HOME/.config/gws",[71,953,549],{"class":115},[71,955,956,959,961,964,966,968,971],{"class":73,"line":125},[71,957,958],{"class":84},"mv",[71,960,543],{"class":115},[71,962,963],{"class":87},"$HOME/Downloads/client_secret_*.json",[71,965,871],{"class":115},[71,967,543],{"class":115},[71,969,970],{"class":87},"$HOME/.config/gws/client_secret.json",[71,972,549],{"class":115},[71,974,975],{"class":73,"line":132},[71,976,129],{"emptyLinePlaceholder":128},[71,978,979,981,983],{"class":73,"line":138},[71,980,23],{"class":84},[71,982,512],{"class":87},[71,984,515],{"class":87},[847,986,988,989,991],{"id":987},"方法-c-gws-auth-setup-をもう一度走らせる対話モード","方法 C: ",[21,990,477],{}," をもう一度走らせる（対話モード）",[62,993,995],{"className":64,"code":994,"language":66,"meta":67,"style":67},"gws auth setup --login\n",[21,996,997],{"__ignoreMap":67},[71,998,999,1001,1003,1006],{"class":73,"line":74},[71,1000,23],{"class":84},[71,1002,512],{"class":87},[71,1004,1005],{"class":87}," setup",[71,1007,1008],{"class":94}," --login\n",[58,1010,1011],{},"対話で client_secret の中身を聞かれるので貼り付ける。",[10,1013,1015,1016,1018],{"id":1014},"step-7-gws-auth-login-で-oauth-認証する","Step 7: ",[21,1017,756],{}," で OAuth 認証する",[62,1020,1022],{"className":64,"code":1021,"language":66,"meta":67,"style":67},"gws auth login\n",[21,1023,1024],{"__ignoreMap":67},[71,1025,1026,1028,1030],{"class":73,"line":74},[71,1027,23],{"class":84},[71,1029,512],{"class":87},[71,1031,515],{"class":87},[58,1033,1034,1035,1038,1039,785,1042,1045,1046,1049],{},"ブラウザが開く → 自分の Google アカウントを選ぶ → 「",[49,1036,1037],{},"このアプリは Google で確認されていません","」と警告が出る → 「",[49,1040,1041],{},"詳細",[49,1043,1044],{},"安全でないページに移動","（〇〇 にアクセスする）」 → スコープを確認して「",[49,1047,1048],{},"続行","」。",[58,1051,1052],{},"警告が出るのは Step 4 で External（Testing 状態）にしたから。Test users に自分を入れてあれば進める。",[58,1054,1055,1056,1059],{},"完了するとターミナルに ",[21,1057,1058],{},"Authentication successful"," のような表示が出て、トークンがキャッシュされる。",[10,1061,1063],{"id":1062},"step-8-動作確認","Step 8: 動作確認",[62,1065,1067],{"className":64,"code":1066,"language":66,"meta":67,"style":67},"# 認証状態の確認\ngws auth status\n\n# 自分のプロフィール\ngws people people get --params '{\"resourceName\": \"people/me\", \"personFields\": \"names,emailAddresses\"}'\n\n# Drive のファイル5件\ngws drive files list --params '{\"pageSize\": 5}' --format table\n\n# カレンダー今日の予定\ngws calendar +agenda --today --format table\n",[21,1068,1069,1074,1083,1087,1092,1113,1117,1122,1147,1151,1156],{"__ignoreMap":67},[71,1070,1071],{"class":73,"line":74},[71,1072,1073],{"class":77},"# 認証状態の確認\n",[71,1075,1076,1078,1080],{"class":73,"line":81},[71,1077,23],{"class":84},[71,1079,512],{"class":87},[71,1081,1082],{"class":87}," status\n",[71,1084,1085],{"class":73,"line":125},[71,1086,129],{"emptyLinePlaceholder":128},[71,1088,1089],{"class":73,"line":132},[71,1090,1091],{"class":77},"# 自分のプロフィール\n",[71,1093,1094,1096,1099,1101,1104,1106,1108,1111],{"class":73,"line":138},[71,1095,23],{"class":84},[71,1097,1098],{"class":87}," people",[71,1100,1098],{"class":87},[71,1102,1103],{"class":87}," get",[71,1105,186],{"class":94},[71,1107,116],{"class":115},[71,1109,1110],{"class":87},"{\"resourceName\": \"people/me\", \"personFields\": \"names,emailAddresses\"}",[71,1112,122],{"class":115},[71,1114,1115],{"class":73,"line":158},[71,1116,129],{"emptyLinePlaceholder":128},[71,1118,1119],{"class":73,"line":163},[71,1120,1121],{"class":77},"# Drive のファイル5件\n",[71,1123,1124,1126,1128,1131,1133,1135,1137,1140,1143,1145],{"class":73,"line":169},[71,1125,23],{"class":84},[71,1127,212],{"class":87},[71,1129,1130],{"class":87}," files",[71,1132,183],{"class":87},[71,1134,186],{"class":94},[71,1136,116],{"class":115},[71,1138,1139],{"class":87},"{\"pageSize\": 5}",[71,1141,1142],{"class":115},"'",[71,1144,152],{"class":94},[71,1146,155],{"class":87},[71,1148,1149],{"class":73,"line":196},[71,1150,129],{"emptyLinePlaceholder":128},[71,1152,1153],{"class":73,"line":201},[71,1154,1155],{"class":77},"# カレンダー今日の予定\n",[71,1157,1158,1160,1162,1164,1166,1168],{"class":73,"line":207},[71,1159,23],{"class":84},[71,1161,143],{"class":87},[71,1163,146],{"class":87},[71,1165,149],{"class":94},[71,1167,152],{"class":94},[71,1169,155],{"class":87},[58,1171,1172],{},"ここまで通ればセットアップ完了。",[10,1174,1176],{"id":1175},"必要なスコープ読み取り専用で始めたいとき","必要なスコープ（読み取り専用で始めたいとき）",[58,1178,1179],{},"書き込みが怖いうちは読み取り専用で始める。",[62,1181,1183],{"className":64,"code":1182,"language":66,"meta":67,"style":67},"# 読み取り専用スコープでログイン\ngws auth login --readonly\n\n# サービスを限定（例: drive, sheets, gmail）\ngws auth login -s drive,sheets,gmail\n\n# 全スコープ（pubsub + cloud-platform 含む。未検証アプリだと restricted_client エラーになることがある）\ngws auth login --full\n",[21,1184,1185,1190,1202,1206,1211,1225,1229,1234],{"__ignoreMap":67},[71,1186,1187],{"class":73,"line":74},[71,1188,1189],{"class":77},"# 読み取り専用スコープでログイン\n",[71,1191,1192,1194,1196,1199],{"class":73,"line":81},[71,1193,23],{"class":84},[71,1195,512],{"class":87},[71,1197,1198],{"class":87}," login",[71,1200,1201],{"class":94}," --readonly\n",[71,1203,1204],{"class":73,"line":125},[71,1205,129],{"emptyLinePlaceholder":128},[71,1207,1208],{"class":73,"line":132},[71,1209,1210],{"class":77},"# サービスを限定（例: drive, sheets, gmail）\n",[71,1212,1213,1215,1217,1219,1222],{"class":73,"line":138},[71,1214,23],{"class":84},[71,1216,512],{"class":87},[71,1218,1198],{"class":87},[71,1220,1221],{"class":94}," -s",[71,1223,1224],{"class":87}," drive,sheets,gmail\n",[71,1226,1227],{"class":73,"line":158},[71,1228,129],{"emptyLinePlaceholder":128},[71,1230,1231],{"class":73,"line":163},[71,1232,1233],{"class":77},"# 全スコープ（pubsub + cloud-platform 含む。未検証アプリだと restricted_client エラーになることがある）\n",[71,1235,1236,1238,1240,1242],{"class":73,"line":169},[71,1237,23],{"class":84},[71,1239,512],{"class":87},[71,1241,1198],{"class":87},[71,1243,1244],{"class":94}," --full\n",[58,1246,1247,1248,1250],{},"実運用に入ったら、必要に応じて再度 ",[21,1249,756],{}," で書き込みスコープも追加する。",[10,1252,1253],{"id":1253},"トラブルシューティング",[847,1255,1257],{"id":1256},"gcloud-cli-not-found",[21,1258,1259],{},"gcloud CLI not found",[58,1261,1262,1264],{},[21,1263,326],{}," が PATH に入っていない。Google Cloud SDK を再インストールし、PATH を通す。",[847,1266,1268],{"id":1267},"oauth-client-creation-requires-manual-setup",[21,1269,1270],{},"OAuth client creation requires manual setup",[58,1272,1273,1274,1276],{},"Step 4 と Step 5 を実施する。これは想定挙動で、",[21,1275,477],{}," だけでは OAuth クライアントは作れない（Cloud Console の Web UI 操作が必須）。",[847,1278,1280],{"id":1279},"このアプリは-google-で確認されていませんが出てログインできない","「このアプリは Google で確認されていません」が出てログインできない",[58,1282,1283,1284,1287],{},"Step 4 の OAuth 同意画面で、",[49,1285,1286],{},"自分のメールアドレスを Test users に追加し忘れている","。Test users に追加して再度試す。",[847,1289,1291,1294],{"id":1290},"auth-error-exit-code-2-が頻発する",[21,1292,1293],{},"Auth error (exit code 2)"," が頻発する",[58,1296,1297],{},"トークンの期限切れ。OAuth 同意画面が Testing 状態だと7日で切れる。再認証する。",[62,1299,1300],{"className":64,"code":1021,"language":66,"meta":67,"style":67},[21,1301,1302],{"__ignoreMap":67},[71,1303,1304,1306,1308],{"class":73,"line":74},[71,1305,23],{"class":84},[71,1307,512],{"class":87},[71,1309,515],{"class":87},[847,1311,1313],{"id":1312},"windows-で日本語が文字化けする","Windows で日本語が文字化けする",[58,1315,1316,1317,1320],{},"gws の出力は UTF-8 だが、Windows Git Bash の Python は stdin/stdout を cp932 でデコードするので化ける。Python にパイプするときは必ず ",[21,1318,1319],{},"PYTHONIOENCODING=utf-8"," を付ける。",[62,1322,1324],{"className":64,"code":1323,"language":66,"meta":67,"style":67},"gws sheets +read --spreadsheet \u003CID> --range \"シート名!A1:Z100\" --format json 2>/dev/null \\\n  | PYTHONIOENCODING=utf-8 python3 -c \"import json,sys; print(json.load(sys.stdin))\"\n",[21,1325,1326,1368],{"__ignoreMap":67},[71,1327,1328,1330,1332,1334,1336,1338,1341,1343,1345,1347,1349,1352,1354,1356,1359,1362,1365],{"class":73,"line":74},[71,1329,23],{"class":84},[71,1331,88],{"class":87},[71,1333,91],{"class":87},[71,1335,95],{"class":94},[71,1337,99],{"class":98},[71,1339,1340],{"class":87},"I",[71,1342,106],{"class":105},[71,1344,109],{"class":98},[71,1346,112],{"class":94},[71,1348,543],{"class":115},[71,1350,1351],{"class":87},"シート名!A1:Z100",[71,1353,871],{"class":115},[71,1355,152],{"class":94},[71,1357,1358],{"class":87}," json",[71,1360,1361],{"class":98}," 2>",[71,1363,1364],{"class":87},"/dev/null",[71,1366,1367],{"class":94}," \\\n",[71,1369,1370,1373,1376,1378,1381,1384,1387,1389,1392],{"class":73,"line":81},[71,1371,1372],{"class":98},"  |",[71,1374,1375],{"class":863}," PYTHONIOENCODING",[71,1377,868],{"class":867},[71,1379,1380],{"class":87},"utf-8",[71,1382,1383],{"class":84}," python3",[71,1385,1386],{"class":94}," -c",[71,1388,543],{"class":115},[71,1390,1391],{"class":87},"import json,sys; print(json.load(sys.stdin))",[71,1393,549],{"class":115},[847,1395,1396],{"id":1396},"スコープが足りないと怒られる",[58,1398,1399,1401,1402,1405,1406,1408],{},[21,1400,756],{}," でスコープを追加し直す。最初に ",[21,1403,1404],{},"--readonly"," でログインしている場合、書き込みは別途 ",[21,1407,756],{}," で全スコープ取り直す。",[10,1410,1412],{"id":1411},"claude-code-から使うときの最低限のお作法","Claude Code から使うときの最低限のお作法",[607,1414,1415,1435,1449,1455],{},[18,1416,1417,1420,1421,1424,1425,1424,1428,1424,1431,1434],{},[49,1418,1419],{},"書き込み操作は実行前に確認",": ",[21,1422,1423],{},"send",", ",[21,1426,1427],{},"update",[21,1429,1430],{},"delete",[21,1432,1433],{},"create"," 系は、Claude Code に任せる前に「これでよい？」と聞く流れを残す",[18,1436,1437,1444,1445,1448],{},[49,1438,1439,1440,1443],{},"大量データは ",[21,1441,1442],{},"pageSize"," で制限",": Drive や Gmail の list 系は最大数千件返ってくる。",[21,1446,1447],{},"--params '{\"pageSize\": 20}'"," のように上限を切る",[18,1450,1451,1454],{},[49,1452,1453],{},"機密情報を含むメール本文は必要部分のみ表示",": Gmail を Claude Code に読ませると、メール全文がコンテキストに乗る。CC/BCC や添付ファイルの取り扱いに注意",[18,1456,1457,1464],{},[49,1458,1459,1460,1463],{},"API 呼び出しの履歴は ",[21,1461,1462],{},"~/.config/gws/cache/"," に残る",": ここに認証情報・キャッシュが置かれる。共用PCでは注意",[10,1466,1467],{"id":1467},"次の一歩",[15,1469,1470,1482,1485],{},[18,1471,1472,1477,1478,1481],{},[26,1473,1476],{"href":28,"rel":1474},[1475],"nofollow","Google Workspace CLI のスキーマを Claude Code に教える"," — ",[21,1479,1480],{},"gws schema \u003Cservice.resource.method>"," で API スキーマを取れる",[18,1483,1484],{},"経費精算スプレッドシートの自動チェック、議事録 → Docs 起こし、カレンダー → 当日の準備物提示、など、社内の繰り返し業務をひとつだけ選んで gws + Claude Code 経由に乗せ替えてみる",[18,1486,1487,1488,1491],{},"不要になったスコープは ",[21,1489,1490],{},"gws auth logout"," で破棄してから再ログインで絞り直す",[10,1493,1494],{"id":1494},"参考",[15,1496,1497,1503,1511],{},[18,1498,1499,1500],{},"リポジトリ: ",[26,1501,33],{"href":28,"target":29,"rel":1502},[31,32],[18,1504,1505,1506],{},"OAuth 同意画面の設定: ",[26,1507,1510],{"href":1508,"target":29,"rel":1509},"https://support.google.com/cloud/answer/10311615",[31,32],"Google Cloud ヘルプ — OAuth 同意画面の設定",[18,1512,1513,1514],{},"Desktop アプリ用 OAuth クライアント: ",[26,1515,1518],{"href":1516,"target":29,"rel":1517},"https://developers.google.com/identity/protocols/oauth2/native-app",[31,32],"Google Identity — OAuth 2.0 for Mobile & Desktop Apps",[1520,1521,1522],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}html pre.shiki code .snbK4, html code.shiki .snbK4{--shiki-default:#A65E2B;--shiki-dark:#A65E2B}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sG7-3, html code.shiki .sG7-3{--shiki-default:#393A34;--shiki-dark:#393A34}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}",{"title":67,"searchDepth":81,"depth":81,"links":1524},[1525,1526,1527,1528,1530,1532,1534,1535,1536,1542,1544,1545,1546,1555,1556,1557],{"id":12,"depth":81,"text":13},{"id":55,"depth":81,"text":56},{"id":279,"depth":81,"text":279},{"id":358,"depth":81,"text":1529},"Step 1: gws 本体をインストールする",{"id":468,"depth":81,"text":1531},"Step 2: gcloud CLI を入れて GCP プロジェクトを準備",{"id":584,"depth":81,"text":1533},"Step 3: gws auth setup でAPI有効化を一括で済ませる",{"id":645,"depth":81,"text":646},{"id":763,"depth":81,"text":764},{"id":837,"depth":81,"text":838,"children":1537},[1538,1539,1540],{"id":849,"depth":125,"text":850},{"id":903,"depth":125,"text":904},{"id":987,"depth":125,"text":1541},"方法 C: gws auth setup をもう一度走らせる（対話モード）",{"id":1014,"depth":81,"text":1543},"Step 7: gws auth login で OAuth 認証する",{"id":1062,"depth":81,"text":1063},{"id":1175,"depth":81,"text":1176},{"id":1253,"depth":81,"text":1253,"children":1547},[1548,1549,1550,1551,1553,1554],{"id":1256,"depth":125,"text":1259},{"id":1267,"depth":125,"text":1270},{"id":1279,"depth":125,"text":1280},{"id":1290,"depth":125,"text":1552},"Auth error (exit code 2) が頻発する",{"id":1312,"depth":125,"text":1313},{"id":1396,"depth":125,"text":1396},{"id":1411,"depth":81,"text":1412},{"id":1467,"depth":81,"text":1467},{"id":1494,"depth":81,"text":1494},"dev","Google公式の Google Workspace CLI（gws）を Windows + pnpm + gcloud で導入し、GCPプロジェクト作成・OAuth同意画面設定・Desktop app クライアント作成・gws auth login までを通す手順。Claude Code やシェルから自分のスプレッドシート・Gmail・カレンダー・Drive を直接操作できるようにする。","md",{},null,"/gws-cli-setup-guide","misc-dev",false,"2026-06-30T00:00:00.000Z",{"title":5,"description":1559},"2026-06/2026-06-30/gws-cli-setup-guide",[23,1570,1571,1572,1573,1574,1575],"Google Workspace","Google Cloud","OAuth","CLI","Claude Code","セットアップ","1aZEBy59PM1XmubbiiGN-AN_MVIur2gp_xK7mBWLL-M",[],"https://log.eurekapu.com/og/blog/gws-cli-setup-guide.png?v=2026-06-30T00%3A00%3A00.000Z&title=gws%EF%BC%88Google%20Workspace%20CLI%EF%BC%89%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E6%89%8B%E9%A0%86%20%E2%80%94%20Claude%20Code%20%E3%81%8B%E3%82%89%E8%87%AA%E5%88%86%E3%81%AE%E3%82%B9%E3%83%97%E3%83%AC%E3%83%83%E3%83%89%E3%82%B7%E3%83%BC%E3%83%88%E3%83%BBGmail%E3%83%BB%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E5%8F%A9%E3%81%8F&author=Kei%20Komatsu&sig=aae76eb1171ac28d",1782885018098]