我在电子表格中有两张纸。
第一张表我从外部API获取数据,以查看所有即将通过触发器不断更新的类。
id |班级|开始|完成|描述 1 tig welding 7/6/2013 10:30 7/6/2013 12:30课程描述 2 tig welding 7/8/2013 10:30 7/8/2013 12:30课程描述 3 Serger Basics 7/8/2013 14:30 7/6/2013 16:30课程描述
第二个是静态类列表,我在其中添加第二列“category”。
类|类别 tig焊接金属加工 Serger Basics纺织品
我想检查两个电子表格中的标题是否匹配,如果是,请将类别添加到第一张表格中,例如:
id |标题|开始|完成|描述|类
然后我将该电子表格作为JSON提供给第三方网络应用。听起来很多工作,但没有提出任何其他解决方案。 这是正在进行中的工作代码,其中包含我被卡住的注释。
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]);
}
}
}
}
答案 0 :(得分:0)
从您的评论中,您似乎想要在匹配的行上添加一个列...您可以在数组级别轻松地执行此操作,只需在找到匹配项时将值分配给行数组元素即可。唯一需要注意的是每行(即每个代表一行的数组)必须具有完全相同的长度,否则您将无法将其正确地写回到工作表中。
您没有提及的一个细节是类别行是否是最后一个和/或如果您的电子表格上有一个标题为“类别”的列名称。
在第一段代码我假设你有,然后你可以简单地使用
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方法在循环内的第一次运行中添加元素,以便{{1每行存在......像这样:
data[row][6]
这一行应该放在迭代数据数组的循环中(索引“row”)
通过你提供的一些信息进一步推进是有点困难,我希望我做出了正确的猜测。