我使用按钮创建了这个虚拟清单,这些按钮可以将值复制和粘贴到不同类型的报表中。代码可能不是最优的,我不是一个程序员,但我正在尽我最大的努力。现在,我在多个地方都有相同的按钮,我希望它在单元格中复制值,相对于按钮本身的位置,但是我不知道如何在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),但它似乎不起作用
发布于 2020-10-31 03:40:41
我相信你的目标如下。
修改要点:
模式1:

在这种模式中,使用OnSelectionChange的简单触发器将单元格用作按钮。当单元格"B3“像上面的图像一样被用作按钮时,脚本如下所示。
示例脚本:
例如,在这个脚本中,当您想使用"B3“的单元格"Sheet1”作为按钮时,请将"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.
}row和column是单元格的行号和列号。模式2:

在此模式中,使用OnEdit触发器将复选框用作按钮。当单元格"B3“像上面的图像一样被用作按钮时,脚本如下所示。
示例脚本:
例如,在这个脚本中,当您想使用"B3“的单元格"Sheet1”作为按钮时,请将"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.
}参考文献:
https://stackoverflow.com/questions/64609143
复制相似问题