GASでPlacesAPIにテキスト検索でリクエストする方法

Googleが提供するPlacesAPIをGASで使ってみました。

GASでアクセスするための方法を備忘録的に残しておこうと思います。

目次(クリックで読みたい部分にジャンプできます)

準備する情報

まず、コードを実装するために以下を準備します。

準備する情報

  • 検索したい場所の名前
  • ApiKey

GCPにて、APIキーを取得します。

https://console.cloud.google.com/google/maps-apis/home

コード例

では、実際に書くコードを示します。

function testAction() {
  getPlaceData("サウナリウム高円寺");
}

function getPlaceData(placeName) {
  var apiKey = "**********************************"; // あなたのAPIキーをここに設定
  var serviceUrl = "https://places.googleapis.com/v1/places:searchText";

  var payload = JSON.stringify({
    "textQuery": placeName,
    "languageCode":"ja",
    "maxResultCount":1
  });

  var headers = {
    'Content-Type': 'application/json',
    'X-Goog-Api-Key': apiKey,
    'X-Goog-FieldMask':`*`
    //places.displayName,places.googleMapsUri,places.location,places.primaryTypeDisplayName,places.websiteUri,places.reviews
  };
  

  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'headers': headers,
    'payload': payload,
    'muteHttpExceptions': true
  };

  // APIリクエストを送信
  var response = UrlFetchApp.fetch(serviceUrl, options);
  var json = JSON.parse(response.getContentText());

  // レスポンスのステータスをチェック
  console.log(JSON.stringify(json))
  if (response.getResponseCode() === 200) {
    var places = json.places; // 候補のリストを取得
    // 場所の情報を処理する(例)
    places.forEach(place => {
      Logger.log(place.displayName.text + ": " + place.id);
    });
    return places;
  } else {
    // エラー処理
    Logger.log('Error fetching place data: ' + response);
    return null;
  }
}

現状は全ての情報取得するようにしています。

取得する情報を制限する場合

取得する情報を制限する場合には、

'X-Goog-FieldMask':`*`

X-Goog-FieldMaskの部分を修正します。

例えば、以下のように書きます。

'X-Goog-FieldMask':`places.displayName,places.googleMapsUri,places.location,places.primaryTypeDisplayName,places.websiteUri,places.reviews,places.id`

まとめ

今回は、GASにてGoogleのPlacesAPIにアクセスする方法について紹介しました。

口コミを5件しか取得できないや、口コミの検索ができないなど不便なところもあります。

近々口コミの検索機能を使用して口コミを取得する方法について紹介しようと思います。では、また。

(Visited 64 times, 1 visits today)