我正在尝试实现此脚本,以在所有可见的工作表(未隐藏)上查找当前日期,并在打开时打开的任何选项卡上移动到活动日期范围(今天)。
我找到了该线程,但现在已锁定, https://productforums.google.com/forum/#!topic/docs/NiPjCPUOx3M
代码部分列出了用于实现此目的的脚本:
该代码似乎不适用于我的工作表,因为我的日期被输入为日历日期,因此被注册为数值。
有人可以帮我吗?
我的工作表: https://docs.google.com/spreadsheets/d/1W3KMwE2dEqe0dkoggKJ5LRT3qHEgwD71izVKx8gJn08/edit?usp=sharing
每个工作表的日期范围在: C4:I4 C51:I51 C98:I98 C145:I145
function onOpen() {
var sheets, sheet, d, now, today, flag, r;
sheets = SpreadsheetApp.getActive().getSheets();
now = new Date(),
today = new Date(now.getYear(), now.getMonth() + 1, now.getDate(), 0, 0, 0, 0)
.getTime();
for (var i = 0, len = sheets.length; i < len; i += 1) {
v = sheets[i].getRange('A:A')
.getValues()
for (var j = 0, l = v.length; j < l; j += 1) {
r = v[j][0];
if (r && isDate_(r)) {
d = new Date(r.getYear(), r.getMonth() + 1, r.getDate(), 0, 0, 0, 0)
.getTime();
if (d == today) {
sheets[i].setActiveRange(sheets[i].getRange(j + 1, 6));
break;
}
}
}
}
}
function isDate_(sDate) {
var tryDate = new Date(sDate);
return (tryDate && !isNaN(tryDate));
}
供工作表查找带有今天日期的单元格并自动将其激活/移动。
答案 0 :(得分:0)
function findToday() {
var shts=SpreadsheetApp.getActive().getSheets();
var now=new Date();
var today=new Date(now.getYear(), now.getMonth(), now.getDate()).valueOf();
for(var s=0;s<shts.length;s++) {
var sh=shts[s];
if(sh.getLastRow() && sh.getLastColumn()) {
//var rgA=sh.getRangeList(['C4:I4','C6:I6','C8:I8','C10:I10']).getRanges();//test ranges
var rgA=sh.getRangeList(['C4:I4','C51:I51','C98:I98','C145:I145']).getRanges();
for(var r=0;r<rgA.length;r++){
var rg=rgA[r];
var vA=rg.getValues();
for(var i=0;i<vA.length;i++) {
for(var j=0;j<vA[i].length;j++){
if(vA[i][j]){
var row=rg.getRow();
var col=rg.getColumn();
var t=new Date(vA[i][j]);
var d=new Date(t.getYear(), t.getMonth(), t.getDate()).valueOf();
if (d==today) {
var name=sh.getName();
sh.setActiveRange(sh.getRange(sh.getLastRow()+1,1));
SpreadsheetApp.flush();
sh.setActiveRange(sh.getRange(row + i, col + j));
return;
}
}
}
}
}
}
}
}
在可能必须要安装的onOpen函数中,只需调用findToday();
function onOpen() {
findToday();
}