Google脚本属性会更改类型吗?

我正在尝试将字符串列表存储为全局变量,并能够将其追加到不同的脚本中。根据{{​​3}},获得相同结果的一种方法是使用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();
}

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

xiongbilanzi 回答:Google脚本属性会更改类型吗?

经过更多的检查,我意识到这些值存储为字符串。

使用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();
}
本文链接:https://www.f2er.com/3103428.html

大家都在问