Javascript 跳转到当前日期单元格(日期在一行中)Google工作表
我有一个谷歌电子表格。第2行包含跨越许多列的日期,例如2020年8月25日、2020年8月26日。是否可以运行脚本,使其跳转到包含文档首次打开时的当前日期的单元格 我知道有一个OnOpen()方法是您定义的,它在打开文档时运行,但是,要获得实际工作的代码是很困难的 注意:我已经看过了,但是解决方案不起作用(我假设是因为我的日期都在一行中) 我对javascript不太了解,我了解一些基础知识。任何帮助都将不胜感激 谢谢您在中找到的代码不适用于您,因为它只检查第一列。Javascript 跳转到当前日期单元格(日期在一行中)Google工作表,javascript,date,google-sheets,Javascript,Date,Google Sheets,我有一个谷歌电子表格。第2行包含跨越许多列的日期,例如2020年8月25日、2020年8月26日。是否可以运行脚本,使其跳转到包含文档首次打开时的当前日期的单元格 我知道有一个OnOpen()方法是您定义的,它在打开文档时运行,但是,要获得实际工作的代码是很困难的 注意:我已经看过了,但是解决方案不起作用(我假设是因为我的日期都在一行中) 我对javascript不太了解,我了解一些基础知识。任何帮助都将不胜感激 谢谢您在中找到的代码不适用于您,因为它只检查第一列。 我稍微修改了这段代码,以便在
我稍微修改了这段代码,以便在一行中搜索日期
根据需要更改rowWithDates变量
函数onOpen(){//自动运行
var rowWithDates=2;//根据需要进行更改
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getActiveSheet();
var range=sh.getDataRange()
var data=range.getValues();
var today=新日期().setHours(0,0,0,0);
var diffref=今天;
var-diff;
var-idx;
对于(var n=0;n0){idx=n;diffref=diff}
}
如果(n==data.length){n=idx}
n++;
sh.getRange(rowWithDates,n).activate();
}
您在中找到的代码不适用于您,因为它只检查第一列。我稍微修改了这段代码,以便在一行中搜索日期
根据需要更改rowWithDates变量
函数onOpen(){//自动运行
var rowWithDates=2;//根据需要进行更改
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sh=ss.getActiveSheet();
var range=sh.getDataRange()
var data=range.getValues();
var today=新日期().setHours(0,0,0,0);
var diffref=今天;
var-diff;
var-idx;
对于(var n=0;n0){idx=n;diffref=diff}
}
如果(n==data.length){n=idx}
n++;
sh.getRange(rowWithDates,n).activate();
}
您可以使用您在问题中引用的答案中提供的代码,您只需更改几件事:
对于(var n=0;n您可以使用您在问题中引用的答案中提供的代码,您只需要更改几件事:
其他解决方案可能适用于当前,建议在使用日期时考虑<强>显示值< /强>。还强烈建议取消旧的for循环和var声明。
这将是一个更适合未来的解决方案:function onOpen() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh =ss.getActiveSheet();
const today = new Date();
const today_year= today.getFullYear();
const today_month = addZero(today.getMonth()+1);
const today_day = addZero(today.getDate());
const today_date = today_day.toString() + "/" + today_month.toString() + "/" + today_year.toString();
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
const dates = sh.getRange(2,1,1,sh.getLastColumn()).getDisplayValues().flat(1);
dates.forEach((d,index)=>{
if (d===today_date){
sh.getRange(2,index+1).activate();}});
}
函数onOpen(){
const ss=SpreadsheetApp.getActiveSpreadsheet();
const sh=ss.getActiveSheet();
const today=新日期();
const today_year=today.getFullYear();
const today\u month=addZero(today.getMonth()+1);
const today_day=addZero(today.getDate());
const today\u date=today\u day.toString()+“/”+today\u month.toString()+“/”+today\u year.toString();
函数addZero(i){
如果(i<10){
i=“0”+i;
}
返回i;
}
const dates=sh.getRange(2,1,1,sh.getLastColumn()).getDisplayValues().flat(1);
dates.forEach((d,索引)=>{
如果(d==今天\U日期){
sh.getRange(2,索引+1).activate();});
}
参考资料:
解决方案:
其他解决方案可能适用于当前,建议在使用日期时考虑<强>显示值< /强>。还强烈建议取消旧的for循环和var声明。
这将是一个更适合未来的解决方案:function onOpen() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh =ss.getActiveSheet();
const today = new Date();
const today_year= today.getFullYear();
const today_month = addZero(today.getMonth()+1);
const today_day = addZero(today.getDate());
const today_date = today_day.toString() + "/" + today_month.toString() + "/" + today_year.toString();
function addZero(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
const dates = sh.getRange(2,1,1,sh.getLastColumn()).getDisplayValues().flat(1);
dates.forEach((d,index)=>{
if (d===today_date){
sh.getRange(2,index+1).activate();}});
}
函数onOpen(){
const ss=SpreadsheetApp.getActiveSpreadsheet();
const sh=ss.getActiveSheet();
const today=新日期();
const today_year=today.getFullYear();
const today\u month=addZero(today.getMonth()+1);
const today_day=addZero(today.getDate());
const today\u date=today\u day.toString()+“/”+today\u month.toString()+“/”+today\u year.toString();
函数addZero(i){
如果(i<10){
i=“0”+i;
}
返回i;
}
const dates=sh.getRange(2,1,1,sh.getLastColumn()).getDisplayValues().flat(1);
dates.forEach((d,索引)=>{
如果(d==今天\U日期){
sh.getRange(2,索引+1).activate();});
}
参考资料:
我认为只要单元格格式设置为“日期”,它就会工作。日期只是一个隐藏的数字。我认为只要