google 代码中的简单相对单元格引用

Simple relative cell referencing in google code

我制作了这个带有按钮的虚拟清单,这些按钮可以将值复制并粘贴到不同类型报告的各种工作表中。代码可能不是最佳的我不是一个程序员,但我正在尽力而为。现在我在多个地方有相同的按钮,我希望它复制单元格中相对于按钮本身位置的值,但我不确定如何在 getRange 函数中以相对方式引用单元格。

代码如下:

function Go() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet ();
  var sheet = SpreadsheetApp.getActiveSheet();
  var destSheet = ss.getSheetByName("Fiche");
  var lastRow = destSheet.getLastRow();
  var source = ss.getRange ('(rowid-3)(colid)');
  var checkbox = sheet.getRange (3,3);
   var destColumn = ss.getRange ('B10').getValues ();
   
  source.copyTo(destSheet.getRange(lastRow + 1,1), {contentsOnly: true});

  
    if (checkbox.getValue() == 'vrai' ) {
         
         var source = ss.getRange ('B9');
      
        source.copyTo(destSheet.getRange(lastRow + 1, destColumn), {contentsOnly: true});
        source.copyTo(destSheet.getRange(lastRow + 1, 2), {contentsOnly: true});
    }
    else {
    
    var nombre = ss.getRange ('D5').getValues() ;
    
        destSheet.getRange(lastRow + 1, destColumn).setValue(nombre);
        destSheet.getRange(lastRow + 1, 2).setValue(nombre)
    } 

我希望将所有 (B10)、(B9) 等格式单元格替换为相对单元格位置。我试过 (colID)(rowID) 但它似乎不起作用

我相信你的目标如下。

  • 您想在单击电子表格上的按钮时检索单元格坐标。

修改点:

  • 遗憾的是,在现阶段,点击电子表格上的按钮时,没有方法可以直接检索点击按钮的信息。
    • 所以当你要使用Spreadsheet上的按钮时,如果你想检索信息,就需要为每个按钮准备每个脚本。但我认为这可能与您期望的方向不同。
  • 在这个答案中,为了检索点击按钮的信息,我想提出以下两种模式作为解决方法。在这些模式中,使用了事件对象。由此,可以检索按钮的信息。这个用了。

模式 1:

在此模式中,使用简单的 OnSelectionChange 触发器将单元格用作按钮。当单元格“B3”用作如上图的按钮时,脚本如下。

示例脚本:

在此脚本中,例如,当您要使用“Sheet1”的单元格“B3”作为按钮时,请将“B3”设置为buttonRanges。并且,设置 sheet.getSheetName() != "Sheet1"。当您想使用单元格“B3”和“B4”作为按钮时,请将“B3”和“B4”设置为buttonRanges

function onSelectionChange(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const buttonRanges = ["B3"];
  if (sheet.getSheetName() != "Sheet1" || !buttonRanges.includes(range.getA1Notation())) return;
  
  const row = range.getRow();  // This is the row number.
  const column = range.getColumn();  // This is the column number.
}
  • 在这种情况下,当单击单元格“B3”时,此脚本为 运行。而rowcolumn是单元格的行号和列号。
  • 因为单元格是作为按钮使用的,所以可以把值放到单元格中。

模式二:

在此模式中,复选框用作使用 OnEdit 触发器的按钮。当单元格“B3”用作如上图的按钮时,脚本如下。

示例脚本:

在此脚本中,例如,当您要使用“Sheet1”的单元格“B3”作为按钮时,请将“B3”设置为buttonRanges。并且,设置 sheet.getSheetName() != "Sheet1"。当您想使用单元格“B3”和“B4”作为按钮时,请将“B3”和“B4”设置为buttonRanges

function onEdit(e) {
  const range = e.range;
  const sheet = range.getSheet();
  const buttonRanges = ["B3"];
  if (sheet.getSheetName() != "Sheet1" || !buttonRanges.includes(range.getA1Notation()) || !range.isChecked()) return;
  
  const row = range.getRow();  // This is the row number.
  const column = range.getColumn();  // This is the column number.
}
  • 在这种情况下,选中复选框时,脚本为 运行。取消选中该复选框时,脚本不是 运行.
  • 因为复选框用作按钮,所以您看不到单元格中的文本。

参考文献: