我通常在VBA中编程,但我的公司正在转向谷歌文档以取代Excel。我的问题源于对象和集合。在VBA中,我能够创建一个类模块并创建一个对象。看起来我无法在Apps脚本中执行此操作。此外,在VBA中,我只是将像 dim Col这样的子集中的集合声明为新集合。但是,我似乎无法在我的Apps脚本中做到这一点。以下是我目前的代码。我试图遍历订单项,将订单项保存为对象,并将该对象存储在带有密钥的集合中。任何帮助都会很棒!现在,当我编译下面的代码时,它表示collection()未定义。
function Create_Collection(){
var DFws = SpreadsheetApp.getActive().getSheetByName('Data Feed')
var KPws = SpreadsheetApp.getActive().getSheetByName('KP')
var DF_lastrow
var KP_lastrow
var CycleDate
var DF_Date
var i
var Ingcol = new Collection();
CycleDate = KPws.getRange(1,2).getValue(); //Sets which cycle ingredients need to be collected
DF_lastrow = DFws.getLastRow();
for (i = 2; i<= DF_lastrow; i++){
DF_Date = DFws.getRange(i,1).getValue();
if(DF_Date.toString() == CycleDate){
var IngObj = { } // empty object
IngObj.KitchenID = DFws.getRange(i,22).getValue(); // Added property KitchenID
IngObj.Recipe = DFws.getRange(i,3).getValue(); // Added property Recipe
IngObj.Name = DFws.getRange(i,4).getValue(); // Added property Name
Ingcol.add (IngObj.KitchenID,IngObj)
}
}
答案 0 :(得分:0)
你没有在任何地方定义集合。
JavaScript不是基于类,而是基于原型,所以我认为你不需要做你想做的事。
像这样初始化Incol:
var Incol = {}
并添加如下对象:
Ingcol[IngObj.KitchenID] = IngObj;
就像你想要一个关联数组一样使用IngObj。