function calculateIntervall(note) {//The passing argument gives me the value of the cell with the note, NOT the column or row of particularly this cell
var spreadsheet = SpreadsheetApp.getActive();
var col = spreadsheet.getActiveCell().getColumn();//get the column of note anyhow?
var row = spreadsheet.getActiveCell().getRow();//get the row of note anyhow?
note = spreadsheet.getCurrentCell().offset(row, col).activate().getNote();//get the value of the note
return col + row;
};
这只是一个示例程序,可以最好地解释我的问题。当前程序返回活动单元格(具有功能的单元格)的行和列的总和。但是我需要带注释的单元格参数的总和。
我只想让行和列像这样(使用标准函数):
=ROW(note)
=COLUMN(note)
函数通常如下所示:
=ROW(A5) -> this returns 5
=COLUMN(C2) -> this returns 3
答案 0 :(得分:0)
自定义函数的typeof()参数有所不同。例如:
function custom_function(p) {
return typeof(p);
}
=custom_function(A1:A1) // returns "number" or "string" depending upon value is in the single cell A1.
=custom_function(B1:B2) // returns "object" - a 2 dimenstional array representing the values in the cells in the range.
=custom_function("C1:C1") // returns "string" - representing "C1:C1"
如上所示,您可以传入一个表示范围的字符串,然后可以根据需要在函数中进行处理:
function custom_function(cell) {
if(!cell.map && (typeof(cell === "string"))) { // not an array or a number
var range = SpreadsheetApp.getActiveSpreadsheet().getRangeByName(cell);
var column = range.getColumn();
var row = range.getRow();
return "c: "+column+" r: "+row;
}
else {
return "Invalid Parameter";
}
}
上有关于将范围值传递到自定义函数的更全面的讨论。
包括以下问题的解决方案:如果将范围引用作为字符串传递,则无法复制包含=custom_function("C1:C1")
的单元格并自动更新单元格引用。
更新以解决注释:下面显示了一种非常简单的方法,可以使用自动更新的单元格引用来复制自定义函数。
=custom_function(A1:C3; ROW(A1); COLUMN(A1); ROW(C3); COLUMN(C3))
因此,在实际的GAS脚本函数中,现在有5个参数:parameter-1是单元格值的二维数组,p2和p3是数组左上角的行和列,p4和p5是数组右下角的行和列。
或者,如果您实际上并不关心这些值,或者很乐意使用坐标简单地在自定义函数中重新创建范围,则:
=custom_function(ROW(A1); COLUMN(A1); ROW(C3); COLUMN(C3))