mac*_*chj 10 row spreadsheet highlight google-apps-script
我有一个Google Docs SpreadSheet,其中A列是日期(A1:2013-11-22,A2:2013-11-23,A3:2013-11-24等).我想自动突出显示 - 为行设置背景颜色,A列是今天的日期.每天都要突出显示不同的行.
我希望我需要一个脚本,恕我直言,这不可能在Google Docs SpreadSheet中使用条件格式化完成.
知道怎么做吗?非常感谢!
小智 9
这就是我做到的.我做了条件格式化并选择了我的范围,然后在"格式化单元格,如果......"我选择自定义并使用此公式:
=$B$2:$B$92 = today()
Run Code Online (Sandbox Code Playgroud)
我在B栏中有我的约会,这突出了我今天的日期范围内的整行.
我修改了 Serge 的一个示例(谢谢 Serge!),日期位于 A 列中。带有日期的行已清除背景颜色,其他行保持不变。奖励:用于在活动工作表上运行脚本的自定义菜单。
/* check for a cell format */
function isValidDate(d) {
if ( Object.prototype.toString.call(d) !== "[object Date]" )
return false;
return !isNaN(d.getTime());
}
/* check for a cell format */
function colorRow()
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
customOnOpen(sh);
}
/* set the background - main function, sh is a sheet */
function customOnOpen(sh) {
var headers = sh.getRange(1,1,sh.getLastRow()).getValues();
var today = new Date().setHours(0,0,0,0);
for(var n=0;n<headers.length;++n){
var date = new Date(headers[n][0]).setHours(0,0,0,0);
Logger.log('Test row '+n);
if(date==today){
Logger.log('Set bg at '+n);
sh.getRange(n+1,1,1,sh.getMaxColumns()).setBackground('yellow');
}
else
{
if (isValidDate(headers[n][0])){
Logger.log('Clear bg at'+n);
sh.getRange(n+1,1,1,sh.getMaxColumns()).setBackground(null);
}
else{
Logger.log('Not a date at'+n);
}
}
}
}
function onOpen() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
/* prepare the custom menu */
var entries = [{
name : "Set background",
functionName : "colorRow"
}];
sheet.addMenu("My menu", entries);
/* run the function for two specific sheets */
customOnOpen(sheet.getSheetByName('Sheet1'));
customOnOpen(sheet.getSheetByName('Sheet2'));
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13635 次 |
最近记录: |