谷歌电子表格脚本-如何测试如果单元格是粗体



我需要测试给定的电子表格单元格是否以粗体显示。这是我到目前为止的脚本代码。

function ifBold(cell, val1, val2) {
    if(cell.getFontWeight() == 'bold')
        return val1;
    return val2;
}

它错误,告诉我'cell'没有函数getFontWeight()。我该怎么做呢?

您必须将单元格作为字符串传递。ifBold("A1", 1,0)

function ifBold(a1Notation, val1, val2) {
    var cell = SpreadsheetApp.getActiveSpreadsheet().getRange(a1Notation);
    if(cell.getFontWeight() == 'bold')
        return val1;
    return val2;
}

如果您传入一个单元格或范围而没有将其作为字符串发送,那么它将分别作为字符串或数组接收。它不能作为一个Range Object来处理。有关这方面的更多信息,请参阅以下链接:
http://code.google.com/p/google-apps-script-issues/issues/detail?id=354
如何从电子表格传递单元格参数到自定义函数作为范围?

编辑:


要以动态的方式编写函数,需要使用内置函数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;
}

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(细胞("地址";A1))或"地址"= ifBold(细胞(A1))

;或者,可以根据您的语言区域而有所不同

new Google sheets:"地址"= myFunction(细胞(A1),":"和细胞("地址"A2))或旧的Google表格:= myFunction(地址(行(A1),列(A1), 4),":"和地址(行(A2),列(A2), 4))

您可能需要更改,以;还是为了这个。如:

= myFunction(细胞("地址";A1),":"和细胞("地址";A2))

参考:https://webapps.stackexchange.com/questions/10629/how-to-pass-a-range-into-a-custom-function-in-google-spreadsheets

相关内容

最新更新