我写了一个脚本,通过for循环变量找到一个给定单元格的匹配(效果很好)。 当注销时,它提供了搜索到的数据列中的位置11.0。 然后我想做的是取消选中一个复选框,该复选框与该引用单元格的偏移量为(0,-5)。 当我尝试使用offset时,我得到TypeError: offset is not a function。 我如何实现这个目标?
下面是我写的脚本,以达到我被卡住的地方。 我所做的是在Sheet2上选中一个框,它与一个给定的产品在同一行。 产品和它的复选框所在的行并不总是相同的(可能是第5行,也可能是第12行)。 一旦我选中了这个复选框,脚本就会确定产品的名称(在本例中,产品L),然后通过Sheet1上的indexOf来查找它的匹配。 IndexOf找到Sheet1上的位置(在本例中,11.0,即第13行,第10列)。 在Sheet1的第13行第5列有一个对应的复选框,然后需要取消复选。 这就是我被卡住的地方。 工作表是动态的,复选框和对应产品的行会不断变化。
function findText() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet2 = spreadsheet.getSheetByName("Sheet2");
var sheet1 = spreadsheet.getSheetByName("Sheet1");
var lr = sheet1.getLastRow();
var lookupRangeArray = sheet1.getRange(3,10,lr,1).getValues();
var newRange = lookupRangeArray.map(function(r){ return r[0]; });
for (var i=0; i <= lr; i++){
var checkboxRange = sheet2.getRange(i+1,2);
var checkboxStatus = checkboxRange.getValue();
if(checkboxStatus == true){
var text = checkboxRange.offset(0, 2).getValue();
Logger.log(text);
var position = newRange.indexOf(text);
Logger.log(position)
position.offset(0,-5).setValue(false);
你可以通过指定单元格引用的行和列的位置或它的 A1
符号。
样本
var row=1;
var column = 11;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var cell = sheet.getRange(row, column);
var newCell = cell.offset(0, -5);