【问题标题】:How to use offset after obtaining reference cell using indexOf in Google Script在 Google Script 中使用 indexOf 获取参考单元格后如何使用偏移量
【发布时间】:2020-05-07 14:04:12
【问题描述】:

我编写了一个脚本来通过 for 循环变量查找给定单元格的匹配项(效果很好)。注销时,它会在搜索的数据列中提供位置 11.0。然后我想要做的是取消选中从该引用单元格偏移 (0,-5) 的复选框。当我尝试使用偏移量时,我得到 TypeError: offset is not a function。我该如何做到这一点?

以下是我编写的用于解决我遇到问题的脚本。我正在做的是检查 Sheet2 上的一个框,该框与给定产品位于同一行。产品及其复选框所在的行并不总是相同的(可能是第 5 行,也可能是第 12 行)。选中该框后,脚本会确定产品的名称(在本例中为 Product 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);

【问题讨论】:

    标签: google-apps-script google-sheets offset indexof


    【解决方案1】:

    您需要检索要偏移的单元格

    你可以做到,例如通过指定单元格引用的行和列位置或其A1 表示法。

    样本

    var row=1;
    var column = 11;
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var cell = sheet.getRange(row, column);
    var newCell = cell.offset(0, -5);
    

    【讨论】:

    • 感谢您的快速回复。因此, indexOf 提供的位置将始终随着工作表的动态变化而变化。 EG - 位置 11.0 将更改为 1.0、5.0、4.0 等。那么检索需要通过循环来完成吗?
    • 如果你能提供你的代码会更容易理解你的问题。
    • 是的。我意识到了这一点,并将其添加到我的问题中,因为您可能要求它。
    • 作为脚本的新事物(可能很明显),我希望简单地添加“position.offset(0,-5).setValue(false)”就可以满足我的需求.没有。只需获取 TypeError: offset is not a function。
    • 在您的情况下,在var position = newRange.indexOf(text); 之后在循环内实现:var column = position + ; 。有了这个,您可以定义 cellcell.offset(0, -5).setValue(false) - 都在同一个 if 语句中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2015-05-24
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多