Google apps script 要按名称在工作表上应用的应用程序脚本条件格式
我一直在尝试制作一个谷歌应用程序脚本代码,如果单元格有像“L”这样的特定文本,它会突出显示单元格 我已经做了下面的代码,但它不工作,当我运行这个没有错误出现。我不知道是什么问题 请你看一下,这就是为什么它不起作用Google apps script 要按名称在工作表上应用的应用程序脚本条件格式,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我一直在尝试制作一个谷歌应用程序脚本代码,如果单元格有像“L”这样的特定文本,它会突出显示单元格 我已经做了下面的代码,但它不工作,当我运行这个没有错误出现。我不知道是什么问题 请你看一下,这就是为什么它不起作用 function formatting() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec'); var range = sheet.getRange("C:AG"
function formatting() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
var range = sheet.getRange("C:AG");
if (range == 'L') {
ss.range.setBackgroundColor('#ea9999');
}
}
守则的问题:
有三件事值得一提:
是一个对象,而不是字符串。在range
条件下,您将比较if
类型的对象与range
类型的对象。您需要使用获取string
对象的值,然后将其与字符串范围
进行比较L
- 此代码将花费大量时间来完成,因为您需要检查的单元格范围很大,而且您正在迭代使用
API方法。如中所述,使用批处理操作更有效, 和GAS
- 您可以做的另一个改进是使用限制范围的行限制,因为您正在查找非空值。没有理由检查最后一行内容后的空单元格
function formatting() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Dec');
const range = sheet.getRange("C1:AG"+sheet.getLastRow());
const values = range.getValues();
const bcolors = range.getBackgrounds();
const new_bcolors = values.map((r,i)=>r.map((c,j)=>c=='L'?'#ea9999':bcolors[i][j]))
range.setBackgrounds(new_bcolors)
}