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”时,此脚本为 运行。而
row
和column
是单元格的行号和列号。
- 因为单元格是作为按钮使用的,所以可以把值放到单元格中。
模式二:
在此模式中,复选框用作使用 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.
}
- 在这种情况下,选中复选框时,脚本为 运行。取消选中该复选框时,脚本不是 运行.
- 因为复选框用作按钮,所以您看不到单元格中的文本。
参考文献:
- Simple Triggers
- Event Objects
- 相关问题
- 本题是实现切换按钮
我制作了这个带有按钮的虚拟清单,这些按钮可以将值复制并粘贴到不同类型报告的各种工作表中。代码可能不是最佳的我不是一个程序员,但我正在尽力而为。现在我在多个地方有相同的按钮,我希望它复制单元格中相对于按钮本身位置的值,但我不确定如何在 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”时,此脚本为 运行。而
row
和column
是单元格的行号和列号。 - 因为单元格是作为按钮使用的,所以可以把值放到单元格中。
模式二:
在此模式中,复选框用作使用 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.
}
- 在这种情况下,选中复选框时,脚本为 运行。取消选中该复选框时,脚本不是 运行.
- 因为复选框用作按钮,所以您看不到单元格中的文本。
参考文献:
- Simple Triggers
- Event Objects
- 相关问题
- 本题是实现切换按钮