ワークフロー

client.workflowsを通じて複数のSDK呼び出しを実行し、結果を1つにまとめて返す複合ヘルパーです。

すべてのワークフローメソッドはclient.workflowsにあります。各メソッドは、通常なら自分で記述する一連のSDK呼び出しを代わりに実行し、クライアント側でまとめた1つの結果を返します。ワークフローに対応する単一のRESTエンドポイントはないため、結果のキーには、RESTレスポンスで送信されるフィールド名ではなく、SDK独自の名前が使われます。

ワークフローは複数の呼び出しを行うため、実行に使用するAPIキーには、ワークフローが使用するすべてのリソースへのアクセス権が必要であり、ワークフローを1回呼び出すと、内部で行われるリクエストごとにレート制限の使用回数が加算されます。各メソッドはlocation_idを引数に取り、数値またはbase64でエンコードされたIDを受け付けます。拠点IDを参照してください。


workflows.auto_reply_to_reviews

1回の呼び出しで、テンプレートを使って拠点のレビューに返信します。肯定的なレビューへの返信率を維持しながら、残りのレビューには手動で対応する場合に使用します。

Python
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]]
パラメーター型説明
location_idstr | int処理対象の拠点です。
templatestr条件に一致するレビューへの返信文です。{rating}はレビューの評価に置き換えられます。
min_ratingint評価がこの値以上のレビューにのみ返信します。デフォルトは4です。
only_unansweredboolすでに返信があるレビューをスキップします。デフォルトはTrueです。
dry_runbool返信を投稿せずに、返信対象となる内容を返します。デフォルトはFalseです。

auto_paging_iter()を使ってreviews.listの各ページを取得し、その後、両方のフィルター条件を満たすレビューごとにreviews.respondを1回呼び出す処理を代わりに実行します。

Python
# 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回呼び出す代わりに使用します。

Python
client.workflows.listings_health_audit(location_id: str | int) -> APIObject

同じ拠点に対するlistings.premium、listings.voice、listings.duplicatesの呼び出しを代わりに実行し、プレミアム掲載情報の結果をsyncStatus別に集計します。

Python
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回の呼び出しを行うため、リアルタイムのダッシュボードではなく定期レポートに使用します。

Python
client.workflows.weekly_reputation_report(    location_id: str | int,    *,    start_date: str | None = None,    end_date: str | None = None,) -> APIObject

start_dateとend_dateはYYYY-MM-DD形式の文字列で、どちらも省略可能です。reviews.analytics.overview、first=50を指定したreviews.list、analytics.google、analytics.bing、listings.premiumの呼び出しを代わりに実行し、期間を受け付ける各呼び出しに指定された期間を渡します。

Python
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になります。


関連項目