0

我在电子表格上有两张纸。

第一张表我从外部 API 获取数据以查看所有即将通过触发器不断更新的类。

编号 | 班级 | 开始 | 完成| 描述 1 tig 焊接 7/6/2013 10:30 7/6/2013 12:30 类描述 2 tig 焊接 7/8/2013 10:30 7/8/2013 12:30 类描述 3 Serger 基础 7/8/ 2013 14:30 7/6/2013 16:30 课程说明

第二个是静态类列表,我在其中添加了第二列“类别”。

班级 | 类别 tig 焊接金属加工 Serger Basics 纺织品

我想检查两个电子表格中的标题是否匹配,如果匹配,则将类别添加到第一张工作表,例如:

编号 | 标题 | 开始 | 完成| 描述 | 类别

然后我将该电子表格作为 JSON 提供给第 3 方网络应用程序。听起来工作量很大,但还没有提出任何其他解决方案。这是正在进行的代码,并附有我卡住的注释。

function listClasses(){
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0]; //list of all upcoming classes
 var sheet1 = ss.getSheets()[1]; //list of titles

 var data = sheet.getDataRange().getValues(); // read all data in the sheet
 var data1 = sheet1.getDataRange().getValues();

 for(n=1;n<data1.length;++n){
    var title1 = data1[n][0];
    var category = data1[n][1];

  // compare Check if title appears in column A of sheet 2.
  if (ArrayLib.find(data1, 0, title1) != -1) {
    // Yes it does, do something in sheet 0
    for( var row = data.length -1; row >= 0; --row )
      if (data[row][1] == title1){

          var id = data[row][0];
          var title = data[row][1];
          var start = data[row][3];
          var finish = data[row][4];
          var description = data[row][5];
          var category = data1[n][1];

  // and here is where I got stuck!
  data.appendRow([category]); 


}
        }

      }

    }
4

1 回答 1

1

从您的评论看来,您似乎想在匹配的行上添加一列......您可以在数组级别很容易地做到这一点,只需在找到匹配项时将值分配给行数组元素。唯一需要关心的是每一行(即表示一行的每个数组)必须具有完全相同的长度,否则您将无法将其正确地写回工作表。

您没有提到的一个细节是类别行是否是最后一个和/或您的电子表格上是否有一个标题为“类别”的列名。

在第一个代码中,我假设你有,那么你可以简单地使用

    data[row][6]=category;// because data[row][6] already exist in this array because the header defines a range width of (at least) 7 when you used getDataRange()
    ...
    // and after the loop just write back data to sheet like this
    sheet.getRange(1,1,data.length,data[0].length).setValues(data);

如果“类别”列不存在,那么您应该在第一次运行时使用push方法在循环内的每一行中添加一个元素,以便每一行都存在......像这样:data[row][6]

if(data[row].length<7){data[row].push(' ')};// ensure that data[row][6] does exist

此行应放置在迭代数据数组的循环中(索引“行”)

用你提供的一些信息很难走得更远,我希望我猜对了。

于 2013-07-08T23:07:17.943 回答