Google サービスでの認証
スクリプトで 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 サービス にアクセスする不承認の広告の検出などのソリューションでは、手順 5 でコピーしたアクセス トークンに資格情報オブジェクトの
accessToken
フィールドを設定します。
注:
アクセス トークンは 1 時間で期限切れになるため、これらの手順を 1 時間ごとに繰り返す必要があります。
オプション 2 - Google OAuth プレイグラウンドから更新トークンを取得する
- Google 開発者コンソール API ダッシュボードに移動する
- [ プロジェクトの作成 ] をクリックして新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- 新しいプロジェクトを作成する場合は、[プロジェクト名] にプロジェクトの名前を入力 します。 たとえば、スクリプトです。
- [作成] をクリックします
- ダッシュボードで、[API とサービスを有効にする] をクリックします
- 検索ボックスに「 シート 」と入力し、[ Google スプレッドシート API] をクリックします。 次に、[有効にする] をクリックします。
- ダッシュボードに戻り ( [API & サービス] をクリック) し、Google Drive API の手順 3 と 4 を繰り返します
- ダッシュボードに戻り ( [API & サービス] をクリックします)、Gmail API の手順 3 と 4 を繰り返します
- ダッシュボードで、左側のナビゲーション ウィンドウで [資格情報] をクリックし、[同意画面の構成] をクリックします。 ユーザーの種類の選択を求められたら、[外部] を選択し、[作成] をクリックします。
- [アプリケーション名] フィールドにアプリケーションの名前 (スクリプト クライアントなど) を入力し、それを要求するフィールドにメールを入力し、[保存して続行] をクリックします。
- [スコープの追加または削除] をクリックし、[.] を選択します。/auth/drive と ../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 構成] アイコン (右上隅の歯車のように見えます) をクリックします。
- [ 独自の OAuth 資格情報を使用する ] ボックスをオンにします
- クライアント ID を OAuth クライアント ID に貼り付ける
- OAuth クライアント シークレットにクライアント シークレットを貼り付ける
- [ 独自のスコープを入力] に貼り付けます https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/gmail.send
- [ API の承認] を クリックし、プロンプトに従って同意を提供します
注:
プレイグラウンドで API を承認するときに、"このアプリは検証されていません" というダイアログが表示されたら、[ 詳細設定 ] をクリックし、[ アプリ名] (unsafe) に移動します。
22. API が承認されたら、トークン 23 の Exchange 承認コードを クリックします。手順 24 24 で使用する 更新トークンからトークン をコピーします。Google サービス にアクセスする不承認の広告の検出などのソリューションでは、資格情報オブジェクトの clientId
、 clientSecret
、 refreshToken
フィールドを手順 13 および 22 で受け取った値に設定します。
オプション 3 - PowerShell スクリプトを使用して更新トークンを取得する
- Google 開発者コンソール API ダッシュボードに移動する
- [ プロジェクトの作成 ] をクリックして新しいプロジェクトを作成するか、既存のプロジェクトを選択します
- 新しいプロジェクトを作成する場合は、[プロジェクト名] にプロジェクトの名前を入力 します。 たとえば、スクリプトです。
- [作成] をクリックします
- ダッシュボードで、[API とサービスを有効にする] をクリックします
- 検索ボックスに「 シート 」と入力し、[ Google スプレッドシート API] をクリックします。 次に、[有効にする] をクリックします。
- ダッシュボードに戻り ( [API & サービス] をクリック) し、Google Drive API の手順 3 と 4 を繰り返します
- ダッシュボードに戻り ( [API & サービス] をクリックします)、Gmail API の手順 3 と 4 を繰り返します
- ダッシュボードで、左側のナビゲーション ウィンドウで [資格情報] をクリックし、[同意画面の構成] をクリックします。 ユーザーの種類の選択を求められたら、[外部] を選択し、[作成] をクリックします。
- [アプリケーション名] フィールドにアプリケーションの名前 (スクリプト クライアントなど) を入力し、それを要求するフィールドにメールを入力し、[保存して続行] をクリックします。
- [スコープの追加または削除] をクリックし、[.] を選択します。/auth/drive と ../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 Run コマンド (<Windows ボタン> +r) を入力します。
cmd.exe
コマンド プロンプトで、GetTokens.ps1 保存したフォルダーに移動し、次のコマンドを入力します。
powershell.exe -File .\GetTokens.ps1
PowerShell スクリプトが正常に実行されると、Google 資格情報を入力するブラウザー セッションが開始されます。 同意すると、Web ページに許可コードが含まれます (「このコードをコピーしてください...」を参照してください)。
許可コードをコピーし、プロンプトのコンソール ウィンドウに入力します。 その後、PowerShell スクリプトは更新トークンを返します。 更新トークンをコピーします。 更新トークンは、パスワードと同様に扱う必要があります。誰かがそれを手に入れると、リソースにアクセスできます。
- Google サービス にアクセスする不承認の広告の検出などのソリューションでは、資格情報オブジェクトの
clientId
、clientSecret
、refreshToken
フィールドを手順 13 と 14 で受け取った値に設定します。