我目前正在努力使用Google Apps脚本的publicCache方法。我的情况如下。我建立了一个脚本来计算各种(德国)邮政编码和五个固定地点之间的距离。 为了加快脚本,我想只计算五个位置的坐标,然后存储结果并在计算功能中访问它。据我所知,Google Apps脚本不支持操纵全局变量,所以我想采用缓存方法。
问题是,我无法使用缓存中的坐标来存储对象。它只返回" object Object"。我做错了什么?
谢谢大家。 亚历
function cityCoordinates() {
var cities = ["Frankfurt", "Munich", "Hamburg", "Cologne", "Berlin"]
var cities_zips = ["60329, Germany", "80335, Germany", "20355, Germany", "50667, Germany", "10557, Germany"]
var cache = CacheService.getPublicCache();
for (k = 0; k < cities_zips.length; k++) {
var city_coordinates = Maps.newGeocoder().geocode(cities_zips[k]);
Logger.log(city_coordinates.results[0].geometry.location) // returns ie {lng=13.365317, lat=52.5231724}
cache.put([k], city_coordinates, 1500)
}
Logger.log(cache.get('1')) // returns [object Object]
}
答案 0 :(得分:1)
您需要在缓存中存储JSON对象。使用JSON.stringfy(city_coodinates)
存储,然后JSON.parse(cache.get('1'))
function cityCoordinates() {
var cities = ["Frankfurt", "Munich", "Hamburg", "Cologne", "Berlin"];
var cities_zips = ["60329, Germany", "80335, Germany", "20355, Germany", "50667, Germany", "10557, Germany"];
var cache = CacheService.getPublicCache();
for (k = 0; k < cities_zips.length; k++) {
var city_coordinates = Maps.newGeocoder().geocode(cities_zips[k]);
Logger.log(city_coordinates.results[0].geometry.location); // returns ie {lng=13.365317, lat=52.5231724}
cache.put([k], JSON.stringify(city_coordinates), 1500);
};
Logger.log(cache.get('1')); // returns the stringfied object
Logger.log(JSON.parse(cache.get('1'))); // returns the object
}