如何在ScriptProperties中存储和检索数组?

时间:2013-12-13 13:38:54

标签: javascript google-apps-script

在处理函数内部我正试图存储并获取名为“theses”的数组数组的值:

 var fact_list = [ ["Kennedy Inauguration", "politics", "tZwnNdFNkNklYc3pVUzZINUV4eUtWVWFSVEf"], ["Pericles’ Funeral Oration", "politics", "sdgrewaNkNklYc3pVUzZINUV4eUtW345ufaZ"], ["The Pleasure of Books", "culture", "1234rFszdgrfYc3pVUzZINUV4eU43usacd"], ["I Am The First Accused (Nelson Mandela)", "law", "34rsgadOsidjSZIswjadi95uydnfklsdks"] ];
function submit(e){
  Logger.log("running submit(e)"); 
  var numberOfItems = e.parameter.checkbox_total;
  var itemsSelected = [];
  // for each item, if it is checked / selected, add it to itemsSelected
  for(var i = 0; i < numberOfItems; i++){
    if(e.parameter['checkbox_isChecked_'+i] == 'true'){
      itemsSelected.push(e.parameter['checkbox_value_'+i]);
    }
  }
  var app = UiApp.getActiveApplication();

  Logger.log("itemsSelected = " + itemsSelected);

  ScriptProperties.setProperties({'theses': itemsSelected}, true); 


  var thesesArrays = ScriptProperties.getProperty('theses');
  Logger.log("thesesArrays = " + thesesArrays);
  for (var i = 0; i < thesesArrays.lenght(); i++){
       var thesesId = ScriptProperties.getProperty('theses')[i][2];
       var thesesType = ScriptProperties.getProperty('theses')[i][1];
       importTheses(target, thesesId, thesesType);
}       
  app.close();
  return app;
}

但是当代码获得行for (var i = 0; i < thesesArrays.lenght(); i++){时出现错误,因为thesesArrays不是数组数组(正如我的意图),而是一个没有{{1}的对象} 方法。

我该如何解决?如何在ScriptProperties中存储和检索数组?

2 个答案:

答案 0 :(得分:12)

另一个答案仅涉及长度上的语法错误。但它仍然无法工作,因为你只能在scriptProperties中存储字符串。

1)json.stringify您的数组将其存储为字符串

2)不要将getProperty调用一百万次。在循环之前调用它一次,并将json.parse变成数组。

答案 1 :(得分:-1)

在javascript中,你无法做到

array.length();

你需要删除()因为length()不存在!

编辑:

如果它返回一个对象数组的数组,你可以做一个函数,通过循环将对象数组转换为特定对象的数组,然后创建你的对象并设置它的属性,例如: / p>

this.name = object['name'];