我需要测试给定的电子表格单元格是否为粗体。到目前为止,这是我的脚本代码。
function ifBold(cell, val1, val2) {
if(cell.getFontWeight() == 'bold')
return val1;
return val2;
}
它出错,告诉我“单元格”没有函数 getFontWeight()。我怎样才能使这项工作?
我需要测试给定的电子表格单元格是否为粗体。到目前为止,这是我的脚本代码。
function ifBold(cell, val1, val2) {
if(cell.getFontWeight() == 'bold')
return val1;
return val2;
}
它出错,告诉我“单元格”没有函数 getFontWeight()。我怎样才能使这项工作?
您必须将单元格作为字符串传递。ifBold("A1", 1, 0)
function ifBold(a1Notation, val1, val2) {
var cell = SpreadsheetApp.getActiveSpreadsheet().getRange(a1Notation);
if(cell.getFontWeight() == 'bold')
return val1;
return val2;
}
如果您传入一个单元格或范围而不将其作为字符串发送,那么它将分别作为字符串或数组接收。而且它不能作为范围对象处理。有关这方面的更多信息,请参阅以下链接:
http ://code.google.com/p/google-apps-script-issues/issues/detail
?id=354 如何将单元格参数从电子表格传递给 custum作为一个范围起作用?
编辑:
要以动态的方式编写函数,它需要使用内置函数 ROW 和 COLUMN。
=ifBold(行(A1), 列(A1), 1, 0)
function ifBold(row, column, val1, val2) {
var range = SpreadsheetApp.getActiveSpreadsheet().getDataRange().getCell(row, column);
if(range.getFontWeight() == 'bold')
return val1;
return val2;
}
getFontWeight() 是 Range 的函数,因此只要您传递给上面的函数的是 Range 对象 (sheet.getRange(...)),它应该可以工作:
https://developers.google.com/apps-script/reference/spreadsheet/range
这是一个通用脚本,它将检查 A 中的每个元素是否为粗体:
function ifBold() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Bold');
var cells = sheet.getRange('A2:A');
for (var i=1; i <= cells.getNumRows(); i++) {
var isBold = false;
if(cells.getCell(i, 1).getFontWeight() == 'bold')
isBold = true;
sheet.getRange(i+1, 2).setValue(isBold);
}
}
参见示例:
https://docs.google.com/spreadsheet/ccc?key=0AmR0r1Y14zgydG03QS1Dd0dLRDA3SWgtLXp6TzV3d3c#gid=3
这很好,但由于单元格地址位于“”注释中,因此无法将该函数拖到不同的单元格中。
function ifBold() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Bold');
var cells = sheet.getRange('A2:A');
for (var i=1; i <= cells.getNumRows(); i++) {
var isBold = false;
if(cells.getCell(i, 1).getFontWeight() == 'bold')
isBold = true;
sheet.getRange(i+1, 2).setValue(isBold);
}
}
为了能够将函数从一个单元格拖动到下一个单元格,您需要使用此功能:如果您想将其用于一个单元格:
=ifBold(CELL("address"; A1)) 或 =ifBold(CELL("address", A1))
; 或 , 可能因您的语言区域而异
新的谷歌表:=myFunction(CELL("address",A1)&":"&CELL("address",A2)) 或旧的谷歌表:=myFunction(ADDRESS(row(A1),COLUMN(A1),4) &":"&地址(行(A2),列(A2),4))
您可能需要将 , 更改为 ; 再次为此。像:
=myFunction(CELL("地址";A1)&":"&CELL("地址";A2))