スクリプトで Google ドライブ、スプレッドシート、メールなどの Google サービスを使用している場合は、資格情報を取得する必要があります。 資格情報を取得するには、いくつかのオプションがあります。
- オプション 1: わかりやすく、時間がかかりませんが、アクセス トークンの有効期限が切れたら 1 時間ごとに繰り返す必要があります。
- オプション 2 — 少し複雑ですが、更新トークンが無効になった場合にのみ繰り返す必要があります。
- オプション 3 — これも少し複雑ですが (提供された PowerShell スクリプトを使用)、更新トークンが無効になった場合にのみ繰り返す必要があります。
オプション 1 - Google OAuth プレイグラウンドからアクセス トークンを取得する
- Google OAuth プレイグラウンドに移動
- [ 独自のスコープを入力する] に、 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- [API の承認] を選択する
- API が承認されたら、[トークンの Exchange 認証コード] を選択します
- 応答から access_token の値をコピーします
- Google サービスにアクセスする 「不承認広告の検出」のようなソリューションでは、資格情報オブジェクトの
accessTokenフィールドに、手順 5 でコピーしたアクセス トークンを設定します。
注:
アクセス トークンは 1 時間で有効期限が切れるため、これらの手順を 1 時間ごとに繰り返す必要があります。
オプション 2 - Google OAuth プレイグラウンドから更新トークンを取得する
- Google デベロッパー コンソールの API ダッシュボードに移動する
- [ プロジェクトの作成 ] を選択して新しいプロジェクトを作成するか、既存のプロジェクトを選択する
- 新しいプロジェクトを作成する場合は、[ プロジェクト名] にプロジェクトの名前を入力します。 たとえば、スクリプトなどです。
- [作成] を選択します
- [ダッシュボード] で、[API とサービスの有効化] を選択します
- 検索ボックスに 「sheets」 と入力し、[ Google Sheets API] を選択します。 次に、[有効化] を選択します
- ダッシュボード ([API] & [サービス] を選択) に戻るし、Google ドライブ API について手順 3 と 4 を繰り返します
- ダッシュボード ([API] & [サービス] を選択) に戻るし、Gmail API について手順 3 と 4 を繰り返します
- [ダッシュボード] の左側のナビゲーション ウィンドウで [資格情報] を選択し、[同意画面の構成] を選択します。 ユーザーの種類を選択するように求められた場合は、[外部]、[作成] の順に選択します
- [アプリケーション名] フィールドにアプリケーションの名前 (たとえば、スクリプト クライアント) を入力し、要求するフィールドにメールを入力して、[保存して続行] を選択します
- [スコープの追加または削除] を選択し、../auth/drive and ../auth/gmail.send 、[更新] の順に選択します
- [保存して続行] を選択します
- [ユーザーの追加] を選択し、Google メールを入力して、[追加] を選択します
- [ダッシュボード] で、左側のナビゲーション ウィンドウで [資格情報] を選択し、[資格情報の作成]、[Oauth クライアント ID] の順に選択します
- [Web アプリケーション アプリケーションの種類] を選択します。 次に、[名前] フィールドに Scripts Web アプリなどの名前を入力します。 次に、承認済みのリダイレクト URI にhttps://developers.google.com/oauthplaygroundを追加します。 最後に、[作成] を選択します
- 手順 18、19、24 で使用するクライアント ID とクライアント シークレットをコピーし、[OK] を選択します
- Google OAuth プレイグラウンドに移動
- OAuth 2.0 構成アイコン (右上隅にある歯車のようなアイコン) を選択します
- [ Use your own OAuth credentials (独自の OAuth 資格情報を使用する)] チェック ボックスをオンにします
- クライアント ID を OAuth クライアント ID に貼り付けます
- クライアント シークレットを OAuth に貼り付けます クライアント シークレット
- [ 独自のスコープを入力する] に、 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- [ API の承認] を選択し、プロンプトに従って同意を提供します
注:
プレイグラウンドで API を承認するときに、"このアプリは確認されていません" というダイアログが表示された場合は、[ 詳細設定 ] を選択し、[ アプリ名] (安全でない) に移動します。
- API が承認されたら、[トークンの Exchange 認証コード] を選択します
- 手順 24 で使用するトークンを 更新トークン からコピーします
- Google サービスにアクセスする 不承認広告の検出などのソリューションでは、資格情報オブジェクトの
clientId、clientSecret、refreshTokenフィールドを、手順 13 と 22 で受け取った値に設定します。
オプション 3 - PowerShell スクリプトを使用して更新トークンを取得する
- Google デベロッパー コンソールの API ダッシュボードに移動する
- [ プロジェクトの作成 ] を選択して新しいプロジェクトを作成するか、既存のプロジェクトを選択する
- 新しいプロジェクトを作成する場合は、[ プロジェクト名] にプロジェクトの名前を入力します。 たとえば、スクリプトなどです。
- [作成] を選択します
- [ダッシュボード] で、[API とサービスの有効化] を選択します
- 検索ボックスに 「sheets」 と入力し、[ Google Sheets API] を選択します。 次に、[有効化] を選択します
- ダッシュボード ([API] & [サービス] を選択) に戻るし、Google ドライブ API について手順 3 と 4 を繰り返します
- ダッシュボード ([API] & [サービス] を選択) に戻るし、Gmail API について手順 3 と 4 を繰り返します
- [ダッシュボード] の左側のナビゲーション ウィンドウで [資格情報] を選択し、[同意画面の構成] を選択します。 ユーザーの種類を選択するように求められた場合は、[外部]、[作成] の順に選択します
- [アプリケーション名] フィールドにアプリケーションの名前 (たとえば、スクリプト クライアント) を入力し、要求するフィールドにメールを入力して、[保存して続行] を選択します
- [スコープの追加または削除] を選択し、../auth/drive and ../auth/gmail.send 、[更新] の順に選択します
- [保存して続行] を選択します
- [ユーザーの追加] を選択し、Google メールを入力して、[追加] を選択します
- [ダッシュボード] で、左側のナビゲーション ウィンドウで [資格情報] を選択し、[資格情報の作成]、[Oauth クライアント ID] の順に選択します
- [デスクトップ アプリ アプリケーションの種類] を選択し、名前 (スクリプト クライアント資格情報など) を入力し、[作成] を選択します
- 手順 15 と 16 で使用するクライアント ID とクライアント シークレットをコピーし、[OK] を選択します
- PowerShell スクリプトを作成して、ユーザーの同意と更新トークンを取得します。
アクセス トークンを取得するには、更新トークンを使用しない限り、ユーザーの同意が必要です。 ただし、スクリプトは UI コンポーネントをサポートしていないため、別の方法で同意を得る必要があります。 この PowerShell には、同意と更新トークンを取得するためのオプションが用意されています。
メモ帳またはお気に入りのエディターを開き、PowerShell スクリプトをエディターにコピーします。
$clientIdと$clientSecretを、アプリの登録時に受け取ったクライアント ID とシークレットに設定します (手順 13 を参照してください)。
$clientId = "your-client-id"
$clientSecret = "your-client-secret"
$scopes = "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/gmail.send"
Start-Process "https://accounts.google.com/o/oauth2/v2/auth?client_id=$clientId&scope=$([string]::Join("%20", $scopes))&access_type=offline&response_type=code&redirect_uri=urn:ietf:wg:oauth:2.0:oob"
$code = Read-Host "Please enter the code"
$response = Invoke-WebRequest https://www.googleapis.com/oauth2/v4/token -ContentType application/x-www-form-urlencoded -Method POST -Body "client_id=$clientid&client_secret=$clientSecret&redirect_uri=urn:ietf:wg:oauth:2.0:oob&code=$code&grant_type=authorization_code"
Write-Output "Refresh token: " ($response.Content | ConvertFrom-Json).refresh_token
ファイルを保存し、GetTokens.ps1 という名前を付けます (任意の名前を付けることができますが、拡張子は .ps1 にする必要があります)。
次に、コンソール ウィンドウを開きます。 Microsoft Windows でコンソール ウィンドウを開くには、次の Windows コマンド実行コマンド (<Windows ボタン>+r) を入力します。
cmd.exe
コマンド プロンプトで、GetTokens.ps1 を保存したフォルダーに移動し、次のコマンドを入力します。
powershell.exe -File .\GetTokens.ps1
PowerShell スクリプトが正常に実行されると、Google 資格情報を入力するブラウザー セッションが開始されます。 同意すると、Web ページには許可コードが表示されます (「このコードをコピーしてください」を参照してください)。
許可コードをコピーし、プロンプトでコンソール ウィンドウに入力します。 その後、PowerShell スクリプトは更新トークンを返します。 更新トークンをコピーします。 更新トークンはパスワードと同様に扱う必要があります。誰かがそれを入手した場合、彼らはあなたのリソースにアクセスできます。
- Google サービスにアクセスする 「不承認広告の検出」のようなソリューションでは、資格情報オブジェクトの
clientId、clientSecret、refreshTokenフィールドを、手順 13 と 14 で受け取った値に設定します。