...
代码块 | ||||||
---|---|---|---|---|---|---|
| ||||||
function main(spreadsheetReport) { //左侧报表超链接所在sheet页名称和单元格名称 var linkCell = "B2"; var sheetName = "Sheet1"; if (!spreadsheetReport || (spreadsheetReport.outputType != "refresh" && spreadsheetReport.outputType != "HTML")) return; var sheet = spreadsheetReport.getSheetByName(sheetName); var positions = linkCell.split(","); for (var i = 0; i < positions.length; i++) { var position = positions[i].trim(); var expandedPositions = sheet.getExpandedPositions(position); for (var j = 0; j < expandedPositions.length; j++) { var cell = sheet.getCell(expandedPositions[j]); if (true) { addLink(spreadsheetReport, sheet, cell, linkCell); } } } } function addLink(spreadsheetReport, sheet, cell, linkCell) { sheet.addRuleLink(cell.cellPosition, "anyRuleName", [ getCellValue(cell.getRelativeCells(linkCell)) ]); } function getCellValue(cell) { if (!cell) return null; if (typeof cell.length == 'number') { var ret = []; for (var i = 0; i < cell.length; i++) { ret.push(cell[i].value); } return ret; } else { return cell.value; } } function checkValue(v1, v2, op) { if (v1 && typeof v1.length == 'number') { for (var i = 0; i < v1.length; i++) { if (checkValue(v1[i], v2, op)) return true; } return false; } if (v2.match(/^d+(.d+)?$/)) { v2 = parseFloat(v2); } switch (op) { case 'EQUAL': return (v1 == v2) || (v2.match(/^\d+(\.\d+)?$/) && v1 == parseFloat(v2)); case 'GREATER': return v1 > v2; case 'LESS': return v1 < v2; case 'INCLUDE': return v1 && v1.indexOf(v2) >= 0; case 'PREFIX': return v1 && v1.indexOf(v2) == 0; case 'SUFFIX': return v1 && v1.indexOf(v2) == (v1.length - v2.length); } } |
宏类型
类型 | 对象 | 子对象 | 事件 |
---|---|---|---|
ClientSide | 左侧报表 | spreadsheetReport | onLinkClick |
宏代码