首页 > 解决方案 > Google Apps 脚本 - 如何在函数的循环中引用对象

问题描述

我正在尝试使用谷歌表格/驱动器创建一个小型发票组织系统。我有一张我称之为“任务”的工作表,我计划从中控制一切。我的一些专栏包括“客户”、“项目”、“要求”、“详细信息”、“分包商”......当我获得新任务/客户时,我会查找并附加与任务相关的信息(“项目”、“要求”)添加到其他工作表,或者,如果不存在,则创建文件夹、工作表,并将“任务”工作表中的相应必要信息附加到新工作表。一些工作表将发送给分包商,具体取决于他们的任务是否已更新或在原始“任务”表中是否分配了新任务。

在我发送给分包商的表格中,将有一些字段供他们填写(费率,等..),一旦填写,我会将这些信息发送到第三张表格以应用一些保证金,额外费用,然后发送信息回到原来的“任务”表,它将在其中填写适当的单元格。一旦填写了一行中的所有必要信息,就会为“客户”列中指定的客户准备并组织成一张发票……

无论如何,我一直在尝试学习 javascript 来实现所有这些。当我计划根据“任务”表的行和列中输入的值创建文件夹、工作表和附加信息时......我在 onEdit 函数中放置了一个 for 循环,该函数执行以下操作:

    function onEdit(e) {

      var ss = e.range.getSheet().getParent();
      var sheet = e.range.getSheet();
      var row = e.range.getRow();  
      var columns = [1, 2, 3, 4, 5, 6, 7, 8, 9];


       //assign titles as 'keys' to array
       var titles = []

       //assign values of edited row to array
       var values = []

       //create an object to associate the title to the new edited values
       var task = {}



       for(var i in columns){

         titles.push(sheet.getRange(1, columns[i]).getValue());  //push titles
         values.push(sheet.getRange(row, columns[i]).getValue()); //push values of updated row
         task[titles[i]] = values[i]; //add the values to their property names in task object

       }

这行得通,我可以引用任务[“客户端”],但我想把这个循环放在一个函数中,以便我可以再次使用它。我想我可以不用它,但数组“列”仅代表我将在“第一轮”中输入的列 --- 当我发送信息时......我将在第 10-15 列输入新信息,然后 16-20,随着任务的进展.. 我想为这些列运行 for 循环,而不必创建单独的循环。为此,我在下面创建了 GetInfo 函数:

   function GetInfo(row,column){

   for(var i in column){

     titles.push(sheet.getRange(1, column[i]).getValue());  //push titles
     values.push(sheet.getRange(row, column[i]).getValue()); //push values of updated row
     this.task[titles[i]] = values[i]; //add the values to their task

   }
  }

我想要完成的与此处概述的类似。但是,示例中没有提到“for(var..in..”),我认为我错过了一些东西。为了尝试将函数用于第一个列数组,我这样做了:

var list = new GetInfo(row,columns);

我想将任务引用如下

list.task["client"]

或者var.task["name"],但是上面的不行。当我敬酒 list.task["Client] 或尝试将其附加到另一个单元格时,什么都没有发生 - 它是空白的。我做错了什么?我该如何正确完成这个?我该怎么办?

任何帮助或指导将不胜感激。请。

(其他吐司正在工作,并且相应的单元格不是空白的,没有 for var 的功能)

标签: javascriptfunctionfor-loopgoogle-apps-scriptthis

解决方案


推荐阅读