分析

使用 listingsapi-js SDK 获取 Google、Bing 和 Facebook 的商家资料分析数据。

分析方法从 Google Business Profile、Bing Places 和 Facebook Pages 获取平台级统计数据,例如搜索展示次数、点击次数、路线请求次数和来电次数。所有分析方法都直接位于 ListingsAPI 客户端实例上,并以地点 ID 为作用范围。数字形式的地点 ID 会自动编码,因此 16808 和 'TG9jYXRpb246MTY4MDg=' 可以互换使用。

这 3 个方法的签名相同:一个地点 ID,加上可选的 { fromDate, toDate } 范围。两个日期均为可选项,可以单独省略,也可以同时省略;省略它们即可使用平台默认的报告时间范围。

每个指标都是时间序列

这些响应数据中没有标量形式的总计值。每个指标都是一个由 { startTime, value } 数据点组成的数组,每天一个数据点(Bing 为每周一个),没有数据的指标为 null,而不是 0 或 []。因此,您需要自行对序列求和,并区分“无数据”和“零”:

series.ts
type Point = { startTime: string; value: number | null }; // null when the metric is absent, so an empty profile never reads as 0.function sumSeries(series: Point[] | null | undefined): number | null {if (!Array.isArray(series)) return null;return series.reduce((acc, p) => acc + (p.value ?? 0), 0);} function show(label: string, series: Point[] | null | undefined) {const total = sumSeries(series);console.log(label, total === null ? 'unavailable' : total);}

fetchGoogleAnalytics

获取某个地点的 Google Business Profile 统计数据。

TypeScript
const google = await client.fetchGoogleAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Impressions (total)', google.total);show('Search impressions', google.search);show('Maps impressions', google.maps);show('Website clicks', google.websiteAction);

选项

参数类型说明
fromDatestring开始日期,YYYY-MM-DD。
toDatestring结束日期,YYYY-MM-DD。

响应数据为 googleInsights 对象,其中每个键对应一个 { startTime, value }[] 序列:total、search、maps、websiteAction、directionsAction、phoneAction、businessBookings、businessFoodOrders 和 businessFoodMenuClicks。total 是商家资料展示次数,即 search 与 maps 之和;它不包含操作类指标。对于 Google 没有数据的任何序列,返回值均为 null。完整的字段参考请参阅获取某个地点的 Google 分析数据。

fetchBingAnalytics

获取某个地点的 Bing Places 统计数据。

TypeScript
const bing = await client.fetchBingAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Bing views', bing.views);

Bing 仅报告一个指标 views,按周而非按天汇总。

选项

参数类型说明
fromDatestring开始日期,YYYY-MM-DD。
toDatestring结束日期,YYYY-MM-DD。

fetchFacebookAnalytics

获取某个地点的 Facebook 主页统计数据。

TypeScript
const facebook = await client.fetchFacebookAnalytics(16808, {fromDate: '2024-01-01',toDate: '2024-12-31',}); show('Page views', facebook.views);show('CTA clicks', facebook.ctaAction);

Facebook 响应数据包含 views、ctaAction、websiteAction、directionsAction 和 phoneAction。其中没有 pageLikes。

选项

参数类型说明
fromDatestring开始日期,YYYY-MM-DD。
toDatestring结束日期,YYYY-MM-DD。

多平台报告

使用 Promise.all 并行获取全部 3 个平台的数据:

analytics_report.ts
import { ListingsAPI } from 'listingsapi-js'; const client = new ListingsAPI(); // reads LISTINGSAPI_KEY from envconst LOCATION_ID = 16808;const range = { fromDate: '2024-01-01', toDate: '2024-12-31' }; const [google, bing, facebook] = await Promise.all([client.fetchGoogleAnalytics(LOCATION_ID, range),client.fetchBingAnalytics(LOCATION_ID, range),client.fetchFacebookAnalytics(LOCATION_ID, range),]); show('Google impressions:', google.total);show('Bing views:', bing.views);show('Facebook views:', facebook.views);

如果某个平台的商家资料尚未连接,该方法会成功返回空对象,而不是拒绝 Promise,单个序列则返回 null。请将这种情况报告为“不可用”,不要使用 ?? 将其强制转换为 0,否则未连接的商家资料会在您的控制台中显示为实际的零值。请求失败时仍会抛出 SDK 中定义的错误类型。

  • 地点:查找地点 ID
  • 评价:评价分析(概览、时间线、sites-stats)
  • 用例:分析报告实现示例