6

私の知る限り、クォータの使用状況を追跡するには、使用する予定のサービスで Google App Service に API キーを提供する必要があります。

私の場合、出発地と目的地を含むスプレッドシートと、その間の距離を計算するためのカスタム関数があります。

を呼び出してクォータを満たすという問題に遭遇しました.getDirections()

エラー: 1 日にサービスが呼び出された回数が多すぎます: ルート。(ライン **)。

コードのサンプル:

 function getDirections_(origin, destination) {
  var directionFinder = Maps.newDirectionFinder();
  directionFinder.setOrigin(origin);
  directionFinder.setDestination(destination);
  var directions = directionFinder.getDirections();  
  return directions;
}

そのため、API キーを自分のプロジェクトに割り当てると、使用状況と無料割り当てにどれだけ近づいているかを確認できるはずです。

スクリプト エディタで、[Resources] メニューの [Advanced Google Services] の下にあるすべての API を有効にしました。その後、Google Developers Console に移動しましたが、カスタム関数が Google Maps API を呼び出した回数や API の使用に関する記録がありませんでした。

論理的には、スクリプトで Google API キーを設定して、スクリプトがユーザー名で API の呼び出しを開始し、特定の API を使用した回数をカウントする必要があると思います。私は今、Google Maps API を匿名で使用していると思います。会社全体に同じ IP が割り当てられているため、この関数を呼び出すために許可されている数を使い果たしています。

要するに、私の単純なスプレッドシート関数を私が持っているパブリック API アクセス キーに接続する方法を知っている場合は返信してください。

ありがとう、ポール

4

4 に答える 4

8

私も長い間この答えを見つけたいと切望しており、見つけられたことを嬉しく思います。このページが更新され た日付に基づいて、2015 年 10 月 14 日頃に Google がこれを利用可能にしたようです。

UrlFetchApp を利用して API キーを追加できます。上記のリンクは、そのキーの取得に役立つはずです。

function directionsAPI(origin, destination) {
 var Your_API_KEY = "Put Your API Key Here";
 var serviceUrl = "https://maps.googleapis.com/maps/api/directions/json?origin="+origin+"&destination="+destination+
"&mode="+Maps.DirectionFinder.Mode.DRIVING+"&alternatives="+Boolean(1)+"&key="+Your_API_KEY;

 var options={
  muteHttpExceptions:true,
  contentType: "application/json",
 };

 var response=UrlFetchApp.fetch(serviceUrl, options);
  if(response.getResponseCode() == 200) {
   var directions = JSON.parse(response.getContentText());
    if (directions !== null){
     return directions;
     }
    }
  return false;
 }

コードを見てみましょう...最初にAPIキーを入力してください。次に、var serviceUrl でパラメーターを選択します。追加のパラメーター (モードと代替) を追加して、それらを追加する方法を示しました。不要な場合は、削除してください。

UrlFetch を使用すると、オプションを追加できます。応答コードが失敗を示している場合にフェッチが例外をスローしないように、muteHttpExceptions を使用しました。そうすれば、例外をスローする代わりに、関数の戻り値の型を選択できます。コンテンツ タイプに JSON を使用しているため、同じ形式を使用してリクエストを送信および取得できます。応答コード 200 は成功を意味するため、ルート案内は解析され、getDirections() が返すオブジェクトのように動作します。UrlFetch が成功しなかった場合 (別の応答コード)、またはオブジェクトが null の場合、関数は false を返します。

Google Maps Directions API を見ると、デベロッパー コンソールでクエリをリアルタイムで確認できます。課金が有効になっていることを確認してください。クォータを超えると課金されます。

于 2015-11-02T20:45:03.450 に答える
1

1.) コンソール ダッシュボードから API キーを追加しました。作業中の正しいプロジェクトを選択することを忘れないでください。https://console.developers.google.com/apis/credentials?project=

2.) 私のプロジェクト (スクリプト エディター) で、コンソールから API キーとクライアント ID を使用して、認証をマップに設定します。以下のスクリプトを含めました。

function getDrivingDirections(startLoc, wayPoint, endLoc){
   var key = "Your_API_Key";
   var clientID = "Your_Client_ID";
   Maps.setAuthentication(clientID, key);
   var directions =  Maps.newDirectionFinder()
        .setOrigin(startLoc)
        .addWaypoint(wayPoint)
        .setDestination(endLoc)
        .setMode(Maps.DirectionFinder.Mode.DRIVING)
        .getDirections();
} return directions;

https://developers.google.com/apps-script/reference/maps/maps#setAuthentication(String,String)

于 2018-08-01T17:14:36.783 に答える
-1

2017 年 7 月 13 日現在、「高度な Google サービス」メニュー (画像 1 と 2) と Google 開発者コンソールの両方で Sheets API を有効にすることで、API を機能させることができました。同じメール アドレスで Google スプレッドシートにログインしている場合、フェッチ機能は必要ありません。

[[リソース] メニューで、[高度な Google サービス] を選択します。][1]

[高度な Google サービスで、Google Sheets API がオンになっていることを確認してください。][2]

[1]: [2]:

于 2017-07-13T13:00:20.667 に答える