Javascript 跳转到当前日期单元格(日期在一行中)Google工作表

Javascript 跳转到当前日期单元格(日期在一行中)Google工作表,javascript,date,google-sheets,Javascript,Date,Google Sheets,我有一个谷歌电子表格。第2行包含跨越许多列的日期,例如2020年8月25日、2020年8月26日。是否可以运行脚本,使其跳转到包含文档首次打开时的当前日期的单元格 我知道有一个OnOpen()方法是您定义的,它在打开文档时运行,但是,要获得实际工作的代码是很困难的 注意:我已经看过了,但是解决方案不起作用(我假设是因为我的日期都在一行中) 我对javascript不太了解,我了解一些基础知识。任何帮助都将不胜感激 谢谢您在中找到的代码不适用于您,因为它只检查第一列。 我稍微修改了这段代码,以便在

我有一个谷歌电子表格。第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();

}
您可以使用您在问题中引用的答案中提供的代码,您只需更改几件事:

  • 使其看起来是一行,而不是一列(请注意,数据数组正在更改第二个数组维度,而不是第一个数组维度);及
  • 让它看起来像一个特定的行,而不仅仅是硬编码到第一行(您可以让数组使用变量“row”,而不是0;相反,我只是让代码只为带有日期的行提取数据-这对于非常大的电子表格来说更快)
  • 函数onOpen(){ var row=8;//将其设置为包含日期的行 var ss=SpreadsheetApp.getActiveSpreadsheet(); var sh=ss.getActiveSheet(); var data=sh.getDataRange(); var datesrow=sh.getRange(行,data.getColumn(),行,data.getWidth()).getValues(); var today=新日期().setHours(0,0,0,0);
    对于(var n=0;n您可以使用您在问题中引用的答案中提供的代码,您只需要更改几件事:

  • 使其看起来是一行,而不是一列(请注意,数据数组正在更改第二个数组维度,而不是第一个维度);以及
  • 让它看起来像一个特定的行,而不仅仅是硬编码到第一行(您可以让数组使用变量“row”,而不是0;相反,我只是让代码只为带有日期的行提取数据-这对于非常大的电子表格来说更快)
  • 函数onOpen(){ var row=8;//将其设置为包含日期的行 var ss=SpreadsheetApp.getActiveSpreadsheet(); var sh=ss.getActiveSheet(); var data=sh.getDataRange(); var datesrow=sh.getRange(行,data.getColumn(),行,data.getWidth()).getValues(); var today=新日期().setHours(0,0,0,0); 对于(变量n=0;解决方案:

    其他解决方案可能适用于当前,建议在使用日期时考虑<强>显示值< /强>。还强烈建议取消旧的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();}); } 参考资料:

    我认为只要单元格格式设置为“日期”,它就会工作。日期只是一个隐藏的数字。我认为只要