我有点卡在这个上面。我正在尝试查找相应的行,并在更新另一个电子表格的第一列后更新另一个Google电子表格中的最后一列。
当用户在电子表格X的ColA中选择“Restocked”时,我需要在另一张表(Y)上查找ColB中的ID值。然后我需要访问电子表格Y,找到包含相同ID的行。访问最后一列或列AZ(52)并将单元格值更改为“Restocked”。
这是我到目前为止所拥有的......
.nbsp-break + br + span {
font-size: 0;
}
答案 0 :(得分:1)
你很接近,除了一个错误。现在,要测试工作表名称,您必须实际获取工作表。我会采取以下措施来解决当前的问题:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet() // call this for the active sheet
...
您的循环设置值时也出现错误:
for(var i = 0; i<data.length;i++){
if(data[i][1] == buybackId){ //[1] because column B
// Get the range of the cell, not the index.
sheet.getRange((i+1), 1).setValue('Restocked');
}
}
...
将辅助工作表从ss
重命名为其他工作表以避免冲突。
除了此修复程序之外,我还建议您进行一些更改,以使脚本对用户更有效。您可以将onEdit
简单触发器与e
事件对象一起使用,而不是查找活动单元格。这将允许您的脚本修改单元格,无论活动单元格在何处。
function onEdit(e){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var s = ss.getActiveSheet();
if( s.getName() == "Restock Queue"){
if ( (e.range.getColumn() == 1.0) && (e.range.getValue() == "Restocked") ){
var nextCell = e.range.offset(0, 1);
var buybackId = nextCell.getValue();
var ss2 = SpreadsheetApp.openById('xxx');
var sheet = ss2.getSheetByName('NameOfSheetHere'); // Name of sheet
var data = sheet.getDataRange().getValues();
for(var i = 0; i<data.length;i++){
if(data[i][1] == buybackId){ //[1] because column B
// Get the range of the cell, not the index.
sheet.getRange((i+1), 52).setValue('Restocked');
}
}
}
}
}