缓存对象

时间:2015-01-22 14:19:46

标签: google-apps-script

我目前正在努力使用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]

  }

1 个答案:

答案 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

}
相关问题