Google 业务简介 API readMask

Google Business Profile API readMask

在我的发现 url 被弃用后,我不得不对我的代码进行一些更改,现在我得到了这个错误。

googleapiclient.errors.HttpError: <HttpError 400 when requesting https://mybusinessbusinessinformation.googleapis.com/v1/accounts/{*accountid*}/locations?filter=locationKey.placeId%3{*placeid*}&readMask=paths%3A+%22locations%28name%29%22%0A&alt=json returned "Request contains an invalid argument.". Details: "[{'@type': 'type.googleapis.com/google.rpc.BadRequest', 'fieldViolations': [{'field': 'read_mask', 'description': 'Invalid field mask provided'}]}]">

我正在尝试使用这个终点accounts.locations.list

我正在使用:

我当前的代码看起来像:

from google.protobuf.field_mask_pb2 import FieldMask

googleAPI = GoogleAPI.auth_with_credentials(client_id=config.GMB_CLIENT_ID,
                                                client_secret=config.GMB_CLIENT_SECRET,
                                                client_refresh_token=config.GMB_REFRESH_TOKEN,
                                                api_name='mybusinessbusinessinformation',
                                                api_version='v1',
                                                discovery_service_url="https://mybusinessbusinessinformation.googleapis.com/$discovery/rest")

field_mask = FieldMask(paths=["locations(name)"])
outputLocation = googleAPI.service.accounts().locations().list(parent="accounts/{*id*}",
                                                                           filter="locationKey.placeId=" + google_place_id,
                                                                           readMask=field_mask
                                                                           ).execute()

从报错来看,我试了很多fieldmask路径还是不知道他们想要什么。 我已经尝试过 location.name、名称、locations.name、位置。location.name 之类的东西,但没有用。

我也尝试在不使用 FieldMask class 的情况下传递 readMask 参数,传递字符串和同样的问题。

因此,如果有人知道他们想要的 readMask 格式是什么,那对我来说会很棒!

.

可以帮忙:

https://www.youtube.com/watch?v=T1FUDXRB7Ns

https://developers.google.com/google-ads/api/docs/client-libs/python/field-masks

您没有正确设置readMask。我在Java和Google中完成了类似的任务returns结果。 readMask 是一个String 类型,下面这行我要给你的是包含所有字段的。您可以省略任何不为您服务的人。我也在写Java中的请求代码,也许可以帮助你更好地转换成Python。

String readMask="storeCode,regularHours,name,languageCode,title,phoneNumbers,categories,storefrontAddress,websiteUri,regularHours,specialHours,serviceArea,labels,adWordsLocationExtensions,latlng,openInfo,metadata,profile,relationshipData,moreHours";
MyBusinessBusinessInformation.Accounts.Locations.List request= mybusinessaccountLocations.accounts().locations().list(accountName).setReadMask(readMask);
    ListLocationsResponse Response = request.execute();
List<Location>= Response.getLocations();
while (Response.getNextPageToken() != null) {
                            locationsList.setPageToken(Response.getNextPageToken());
                            Response=request.execute();
                            locations.addAll(Response.getLocations());              
                        } 

-- 关于您在评论中提出的问题,这就是我对 placeId 的看法: