## 各種制限
### 1日あたりの API オペレーション制限
1日あたりのAPI 使用量上限は、開発者トークンごとに実行されるAPIオペレーションの数に基づく。
APIオペレーション数 = getリクエスト数 + mutateオペレーション数
getリクエスト(データの取得): データを読み取るためのAPI操作
mutateオペレーション(データの変更): 広告アカウント内のデータを変更、追加、または削除するためのAPI操作
1日あたりのAPIオペレーション制限は、開発者トークンのアクセス権によって異なる。
### **APIオペレーションのカウント例**
| API リクエスト | 1 日の上限にカウントされるオペレーション |
| --- | --- |
| オペレーション: Search
カウント: 53 個の広告グループ
サービス: GoogleAdsService | 1 |
| オペレーション: SearchStream
カウント数: 45 キャンペーン
サービス: GoogleAdsService | 1 |
| オペレーション: mutate
カウント: 2 個の広告グループ
サービス: AdgroupAdService | 2 |
3番目の例では**`mutate`**オペレーションが2個の広告グループに対して実行されており、各変更されたアイテム(この場合は広告グループ)が個別のオペレーションとしてカウントされる。
- **`mutate`**リクエストでは、変更、追加、または削除される各アイテム(例えば、広告グループ、キャンペーン、キーワードなど)が個別のオペレーションとしてカウントされる。
- **`Search`**や**`SearchStream`**のようなクエリリクエストとは異なり、これらはクエリ全体が1回のオペレーションとしてカウントされる。
### アクセスレベルと1日のオペレーションの上限
| アクセスレベル | アクセスできるユーザー | 1 日のオペレーションの上限 |
| --- | --- | --- |
| テストアカウントへのアクセス | テストアカウント | 15,000 オペレーション / 日 |
| 基本的なアクセス | テストアカウントと本番環境のアカウント | 15,000 オペレーション / 日 |
| 標準権限 | テストアカウントと本番環境のアカウント | 1 日あたりのオペレーション数無制限 |
標準権限があると、開発者トークンはほとんどのサービスで 1 日あたり無制限数のオペレーションを実行できます。これには、`GoogleAdsService`、`Search`、`SearchStream` などが含まれます。
標準アクセスレベルは、無制限の Google Ads API オペレーションを必要とするデベロッパー(大企業や、多くのユーザーにサービスを提供するツールなど)にのみ付与されます。
→ ファインズクラウドには標準権限が必要な気がする。ベーシックアクセス権がある場合はこないだの申請フォームと[同じようなフォーム](https://support.google.com/adspolicy/contact/standard_token_application?hl=en&sjid=16039351909604504204-AP)から申請する必要がある。
### その他APIオペレーションの上限
| リクエストの種類、制限、エラーコード | | |
| --- | --- | --- |
| ページネーションされたリクエスト | 1 ページあたり 10,000 行 | INVALID_PAGE_SIZE |
| ベーシックアクセス権によるオペレーション | 1 日あたり 15,000 回の API オペレーション | RESOURCE_EXHAUSTED |
| 変更リクエスト | リクエストあたり 10,000 オペレーション | TOO_MANY_MUTATE_OPERATIONS |
| プランニングサービスリクエスト | 1 QPS | RESOURCE_EXHAUSTED |
| コンバージョンアップロードサービスのリクエスト | コンバージョン: リクエストごとに 2,000 件 | TOO_MANY_CONVERSIONS_IN_REQUEST |
| 請求先アカウントとアカウントの予算サービスリクエスト | ミューテーション リクエストあたり 1 オペレーション | TOO_MANY_MUTATE_OPERATIONS |
### gRPC の制限
**gRPCについて**
gRPC(Google Remote Procedure Call)とはGoogleによって開発されたオープンソースの高性能リモートプロシージャコール(RPC)フレームワーク。
異なるサーバー間で効率的に通信を行うためのモダンな方法を提供し、特にマイクロサービスアーキテクチャにおいて広く使用されている。
**Google広告APIとgRPC**
Google広告APIでは、gRPCを使用してクライアントライブラリからのリクエストとレスポンスを処理する。gRPCの利用により、API通信は効率的かつ高速に行われるが、gRPCのメッセージサイズには制限がある。
- デフォルトではgRPC のメッセージサイズは4 MBだが、クライアントライブラリでは効率を高めるために最大メッセージサイズが **64 MB** に設定されている。
- 回答はこの上限を超えないようにする。たとえば、多数のフィールドを含む検索リクエストの場合、生成されるレスポンスのサイズが 64 MB を超える場合がある。
- この制限を回避するには、選択フィールドの数を減らすか、ページサイズを小さくするか、ストリーミングを使用する。ミューテーションの場合は、リクエストごとに送信するオペレーションの数を減らす。
- 参考: **[GoogleAdsService を使用したレポート ストリーミング](https://developers.google.com/google-ads/api/docs/reporting/streaming?hl=ja)**
### **mutate リクエスト**
1 回の変換リクエストは、ユーザーの 1 日あたりのオペレーションの割り当てにカウントされるが、1 回のリクエストに含めることができるオペレーションは **10,000** 件まで。
この制限に違反するリクエストは、`TOO_MANY_MUTATE_OPERATIONS` というエラーが返される。
### **検索リクエスト**
`Search` リクエストまたは `SearchStream` リクエストは、ユーザーの 1 日あたりのオペレーション割り当てに 1 回のオペレーションとしてカウントされる。1 つの `SearchStream` リクエストは、バッチ数に関係なく 1 つの API オペレーションとしてカウント。
### **ページ分けリクエスト**
ページ分けされたリクエスト(有効な `next_page_token` を含むリクエストなど)は、ユーザーの 1 日あたりのオペレーション割り当てにカウントされません。ただし、期限切れまたは無効なページトークンを含むページ設定リクエストでは例外が生成され、1 日のオペレーション割り当てにカウントされます。
### **プランニング**
- お客様 ID または開発者トークンごとに、毎秒 **1** 件のリクエストに制限されます。
- `KeywordPlanService.GetKeywordPlan`
- `KeywordPlanService.GenerateHistoricalMetrics`
- `KeywordPlanService.GenerateForecastMetrics`
これらの制限に違反するリクエストは、`RESOURCE_EXHAUSTED` というエラーが返される。
| キーワード プラン オブジェクト | 最大数 |
| --- | --- |
| アカウントあたり KeywordPlan | 10,000 |
| KeywordPlanAdGroup / KeywordPlan | 200 |
| KeywordPlanAdGroupKeyword / KeywordPlan | 10,000 |
| KeywordPlanCampaignKeyword(除外キーワード) | 1,000 |
| KeywordPlanCampaign / KeywordPlan | 1 |
### **コンバージョンアップロード**
- 1 リクエストあたりのコンバージョンまたはクリックコンバージョンは **2,000** 回まで:
- `ConversionUploadService.UploadCallConversions`
- `ConversionUploadService.UploadClickConversions`
これらの上限に違反するリクエストは、`TOO_MANY_CONVERSIONS_IN_REQUEST` というエラーが返される。
### **コンバージョン調整のアップロード**
- コンバージョンの調整はリクエストごとに **2,000** 回まで:
- `ConversionAdjustmentUploadService.UploadConversionAdjustments`
これらの上限に違反するリクエストは、`TOO_MANY_ADJUSTMENTS_IN_REQUEST` というエラーで拒否されます。
## 参考資料
- **[アクセスレベルと許容される用途](https://developers.google.com/google-ads/api/docs/access-levels?hl=ja)**
- **[レートシートと違約金](https://developers.google.com/google-ads/api/docs/rate-sheet?hl=ja#api_operations)**
- **[API の制限と割り当て](https://developers.google.com/google-ads/api/docs/best-practices/quotas?hl=ja)**