2013-04-04 39 views

回答

4

您必須將該單元格作爲字符串傳遞。 ifBold(「A1」,1,0)

function ifBold(a1Notation, val1, val2) { 
    var cell = SpreadsheetApp.getActiveSpreadsheet().getRange(a1Notation); 

    if(cell.getFontWeight() == 'bold') 
     return val1; 
    return val2; 
} 

如果在細胞或範圍通過而不發送作爲一個字符串,那麼將被接收爲一個字符串或陣列,分別。它將無法作爲Range對象進行處理。有關更多信息,請參見以下鏈接:
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?

編輯:
要寫入的方式,是動態的功能,它需要使用內置函數行和列。
= 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

如何計算一排粗體?不能得到它甚至計算A1)錯誤 – Kangarooo 2014-06-04 22:29:22

0

getFontWeight()是範圍的函數,所以只要你正在傳遞給你的函數上面是Range對象(sheet.getRange(...)),它應該工作:

https://developers.google.com/apps-script/reference/spreadsheet/range

這是一個腳本,它會爲您在每一個元素是否是大膽與否:

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

+0

在示例世界上沒有式 – Kangarooo 2014-06-04 22:08:25

+0

這是一個腳本。嘗試菜單:「工具 - >腳本編輯器...」。 – opowell 2014-08-05 13:49:50

相關問題