google-apps-script - 有没有办法测试一个单元格是否包含任何可见的格式?
问题描述
因此,我构建了一个函数,该函数将根据提供的列字母返回下一个没有数据的可用行。在这种情况下,该列中的数据必须是连续的,因此如果行中有间隙,那么我知道这将不起作用。有一个名为 Format 的可选参数,如果设置为 1 将假定格式化的单元格被认为是使用的并且不会接受它为空。这就是我所拥有的
// @param {txt} SheetName : The name of the sheet are testing on.
// @param {txt} Column : The column letter that we are checking for a next row in
// @param {int} Format : Optional Boolean Value, when testing for the next available row does a formatted cell count as a used cell IE the cell has a fill, has a border, 1 = yes, 0 = no (default)
// @returns {number} : return the next available row number.
function getNextAvailableRowInColumn(SheetName, Column, Format = 0){
var ColValues = ss.getRange(SheetName+'!'+Column+'1:'+Column).getValues(); // This should evaluate to .getRange("Invoices!A1:A");
var NextAvailableRow = ColValues.filter(String).length +1;
// We add 1 so we get the next available row and not the last row with data
if (Format) {
while (THIS CELL HAS FORMATING) {
NextAvailableRow +1;
}
}
return NextAvailableRow;
}
因此,基于此功能,一切都很好,逻辑也很合理。一旦我们找到下一个没有任何数据的可用行,但我们不知道它是否没有格式(如果我们设置了位),所以我们测试了单元格,如果它有可见的格式,则向下一行和再次测试,继续往下走,直到我们找到一个没有格式的单元格。
问题是,如何测试“此单元格已格式化”?我将如何测试一个单元格是否对它进行了任何类型的可见格式设置,例如添加了边框、突出显示了它?我不关心不可见的格式,如粗体、下划线或字体颜色设置。
解决方案
getRichTextValue
您可以使用该方法中的运行来确定单元格是否具有格式。
function cellHasFormatting(address = "A1") {
var cell = SpreadsheetApp.getActiveSheet().getRange(address);
var runs = cell.getRichTextValue().getRuns();
for (let r=0; r<runs.length; r++) {
const style = runs[r].getTextStyle();
if (style.isBold() || style.isItalic() || style.isUnderline()) {
return true;
}
}
return false;
}
推荐阅读
- ios - 符号化后如何从 App Store 崩溃日志中找到根本原因?
- xcode9 - 使用 Xcode 构建数据库时遇到问题
- excel - 如何在 Excel 中的下拉列表中添加自定义值
- android - 将 GL 像素传输到相机像素以进行广播
- android - 向特定号码的电话发送短信
- python - 让 Python 脚本每小时执行一次
- php - 无法连接到 localhost MySQL - mysql.sock 错误 - ERROR 2002 (HY000)
- python - 如何在python中使用plotly消除条形图中的空白
- reactjs - 在 mobx 中嵌套 observable 可以吗?
- c# - 命名对象“实例化器”对象