我有一個包含地名的公共表單,我正在使用 Places API 獲取地名,然后再呼叫一次以查找地址。我需要優化 API 呼叫量,因此我嘗試添加快取,以便 Sheets 不會不必要地重新呼叫這兩個 API。
出于某種原因,我無法讓快取作業,要么出錯,要么我得到“物件物件”作為回應。
function locId(text) {
var text = cache.get(cacheLocId);
if (cacheLocId === null) {
var API_KEY = 'XYZXYZXYZ';
var baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
var queryUrl = baseUrl '?input=' text '&inputtype=textquery&key=' API_KEY;
if (text == null) {
console. log("I QUIT!")
return;
}
var response = UrlFetchApp.fetch(queryUrl);
var json = response.getContentText();
var placeId = JSON.parse(json);
}
cache.put(cacheLocId, placeId)
console. log(text)
console. log(placeId)
return placeId.candidates[0].place_id;
}
uj5u.com熱心網友回復:
看起來您正在覆寫函式引數并以錯誤的方式使用快取鍵和值。試試這個模式:
function locId(text) {
if (!text || typeof text !== 'string') {
return null;
}
const cache = CacheService.getDocumentCache();
const cached = cache.get(text);
if (cached) {
return cached;
}
const API_KEY = 'XYZXYZXYZ';
const baseUrl = 'https://maps.googleapis.com/maps/api/place/findplacefromtext/json';
const queryUrl = baseUrl '?input=' text '&inputtype=textquery&key=' API_KEY;
const response = UrlFetchApp.fetch(queryUrl);
const placeId = JSON.parse(response.getContentText()).candidates[0].place_id;
cache.put(text, placeId);
return placeId;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/395417.html
標籤:谷歌应用程序脚本
上一篇:如何制作沒有圖示的TabBar?
