ワークフロー
client.workflowsを通じて複数のSDK呼び出しを実行し、結果を1つにまとめて返す複合ヘルパーです。
すべてのワークフローメソッドはclient.workflowsにあります。各メソッドは、通常なら自分で記述する一連のSDK呼び出しを代わりに実行し、クライアント側でまとめた1つの結果を返します。ワークフローに対応する単一のRESTエンドポイントはないため、結果のキーには、RESTレスポンスで送信されるフィールド名ではなく、SDK独自の名前が使われます。
ワークフローは複数の呼び出しを行うため、実行に使用するAPIキーには、ワークフローが使用するすべてのリソースへのアクセス権が必要であり、ワークフローを1回呼び出すと、内部で行われるリクエストごとにレート制限の使用回数が加算されます。各メソッドはlocation_idを引数に取り、数値またはbase64でエンコードされたIDを受け付けます。拠点IDを参照してください。
workflows.auto_reply_to_reviews
1回の呼び出しで、テンプレートを使って拠点のレビューに返信します。肯定的なレビューへの返信率を維持しながら、残りのレビューには手動で対応する場合に使用します。
client.workflows.auto_reply_to_reviews( location_id: str | int, *, template: str = "Thank you for your feedback!", min_rating: int = 4, only_unanswered: bool = True, dry_run: bool = False,) -> list[dict[str, Any]]auto_paging_iter()を使ってreviews.listの各ページを取得し、その後、両方のフィルター条件を満たすレビューごとにreviews.respondを1回呼び出す処理を代わりに実行します。
# See what would be sent, without postingplan = client.workflows.auto_reply_to_reviews( 16808, template="Thanks for the {rating}-star review!", min_rating=4, dry_run=True,)for entry in plan: print(entry["id"], entry["rating"], entry["status"]) # Then post for realresults = client.workflows.auto_reply_to_reviews(16808, min_rating=4)print(f"Replied to {len(results)} reviews")処理したレビューごとに1つのdictを含む通常のリストを返し、各dictにはid、rating、reply、statusが含まれます。まずdry_run=Trueで実行してください。返される各エントリーではstatusがdry_runに設定されるため、返信が投稿される前に対象を確認できます。
workflows.listings_health_audit
1回の呼び出しで、拠点のプレミアム掲載情報、音声掲載情報、重複掲載情報、スコアを取得します。拠点ごとの状態を表示するパネルでは、個別に3回呼び出す代わりに使用します。
client.workflows.listings_health_audit(location_id: str | int) -> APIObject同じ拠点に対するlistings.premium、listings.voice、listings.duplicatesの呼び出しを代わりに実行し、プレミアム掲載情報の結果をsyncStatus別に集計します。
audit = client.workflows.listings_health_audit(16808)print(f"Health score: {audit.health_score}%")print(f"Synced: {audit.synced_count} of {len(audit.premium)}")print(f"Duplicates found: {len(audit.duplicates)}")for issue in audit.issues: print(issue.get("site"), issue.get("syncStatus"))location_id、premium、voice、duplicates、synced_count、issue_count、issues、health_scoreを含むAPIObjectを返します。health_scoreは、プレミアム掲載情報のうちsyncStatusがSYNCEDであるものの割合を整数のパーセント値で表したもので、プレミアム掲載情報がない場合は0になります。issuesには、syncStatusが存在し、かつSYNCEDではないプレミアム掲載情報が格納されます。
workflows.weekly_reputation_report
指定した期間について、1つの拠点のレビュー、レビュー分析、プロフィール分析、掲載情報の同期状態を取得します。5回の呼び出しを行うため、リアルタイムのダッシュボードではなく定期レポートに使用します。
client.workflows.weekly_reputation_report( location_id: str | int, *, start_date: str | None = None, end_date: str | None = None,) -> APIObjectstart_dateとend_dateはYYYY-MM-DD形式の文字列で、どちらも省略可能です。reviews.analytics.overview、first=50を指定したreviews.list、analytics.google、analytics.bing、listings.premiumの呼び出しを代わりに実行し、期間を受け付ける各呼び出しに指定された期間を渡します。
report = client.workflows.weekly_reputation_report( 16808, start_date="2026-09-01", end_date="2026-09-07",)print(report.review_summary.get("averageRating"))print(report.analytics.get("google", {}).get("views"))print(report.listings_health.get("sync_rate"))location_id、review_summary(レビュー分析の概要)、recent_reviews(指定期間内のレビュー、最大50件)、analytics(googleとbingを含むdict)、listings_health(total、synced、sync_rateを含むdict)を含むAPIObjectを返します。sync_rateはパーセント形式の文字列で、拠点にプレミアム掲載情報がない場合はN/Aになります。