【问题标题】:Does Google script properties change types?Google 脚本属性是否会更改类型?
【发布时间】:2019-11-14 10:33:24
【问题描述】:

我正在尝试将字符串列表存储为全局变量,并能够在不同的脚本中附加到它。根据this answer,实现相同结果的一种方法是使用 PropertyService 和 Properties。我已经定义了一个全局文档属性变量,并且可以在其中获取和设置属性。但是,如果我设置了一个键来保存一个数组,那么当我下次获取属性时,它就不会像数组一样了。

MWE:

var ps = PropertiesService.getDocumentProperties();

function propTest() {
  var d = ps.getProperties();
  if ("a" in d){
    // a is already defined
    var list = d.a;
    list.push("Hello");  // This causes TypeError: Cannot find function push in object [Lnumber;@57220e4c.
//    d["a"].push("Hello"); // This line gives exactly the same error
  } else {
    // a has not yet been defined
    var a = [];
    a.push("Hello");  // Works fin as an array before being set in the Properties.
  }
  d.a = a;
  ps.setProperties(d)
}

function reset(){
  ps.deleteAllProperties();
}

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    经过一番检查,我意识到这些值是以字符串形式存储的。

    像这样使用 JSON 转换解决了问题

    var ps = PropertiesService.getDocumentProperties();
    
    function propTest() {
      var d = ps.getProperties();
      if ("a" in d){
        var a = JSON.parse(d.a); // <- parsing
        a.push("Hello")
      } else {
        var a = [];
        a.push("Hello");
      }
      d.a = JSON.stringify(a);   // <- stringifying
      ps.setProperties(d)
    }
    
    function reset(){
      ps.deleteAllProperties();
    }
    

    【讨论】:

      猜你喜欢
      • 2014-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 2019-11-18
      • 2019-10-04
      • 1970-01-01
      相关资源
      最近更新 更多