我需要测试给定的电子表格单元格是否为粗体字体。到目前为止,这是我的脚本代码。
function ifBold(cell, val1, val2) {
if(cell.getFontWeight() == 'bold')
return val1;
return val2;
}
它错误,告诉我'cell'没有函数getFontWeight()。我怎样才能做到这一点?
答案 0 :(得分:5)
您必须将单元格作为字符串传递。 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
How do I pass a cell argument from a spreadsheet to a custum function as a range?
修改强>
要以Dynamic的方式编写函数,需要使用内置函数ROW和COLUMN
= ifBold(ROW(A1),COLUMN(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;
}
答案 1 :(得分:0)
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
答案 2 :(得分:-1)
这很好但是由于单元格地址在&#34;&#34;&#34;&#34;&#34;&#34;&#34;注释
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(&#34;地址&#34 ;; A1)) 要么 = ifBold(CELL(&#34;地址&#34;,A1))
或者,由于您的语言区域可能会有所不同
新的Google工作表: = myFunction的(CELL(&#34;地址&#34;,A1)及;&#34;:&#34;&安培; CELL(&#34;地址&#34;,A2)) 要么 旧的谷歌表: = myFunction的(ADDRESS(行(A1),COLUMN(A1),4)及;&#34;:&#34;&安培; ADDRESS(行(A2),COLUMN(A2),4))
你可能需要改变,到;再次为此。像:
= myFunction的(CELL(&#34;地址&#34 ;; A1)及;&#34;:&#34;&安培; CELL(&#34;地址&#34 ;; A2))