VBA到Google Doc Apps脚本

时间:2015-10-26 17:00:20

标签: javascript vba google-apps-script google-docs-api

我通常在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)

      }



}

1 个答案:

答案 0 :(得分:0)

你没有在任何地方定义集合。
JavaScript不是基于类,而是基于原型,所以我认为你不需要做你想做的事。

像这样初始化Incol:

var Incol = {}

并添加如下对象:

Ingcol[IngObj.KitchenID] = IngObj;

就像你想要一个关联数组一样使用IngObj。