我有一个谷歌表单电子表格。第2行包含日期,例如2020年8月25日、2020年8日26日,跨越多个列。有没有一个脚本我可以运行,使它跳转到包含文档第一次打开时的当前日期的单元格?
我知道您定义了OnOpen()方法,它在打开文档时运行,但是,获取实际工作的代码很困难。
注意:我查看了Google电子表格/文档,在打开时跳转到当前日期单元格,但解决方案不起作用(我假设是因为我的日期都在一行中)。
我不太了解javascript,我只懂一点基本知识。任何帮助都将不胜感激。
谢啦
虽然其他解决方案目前可能有效,但建议在使用Dates时考虑显示值。强烈建议去掉旧的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();}});
}
getDisplayValue()
您可以使用您在问题中引用的答案中提供的代码,您只需要更改几件事:
function onOpen() {
var row = 8; //set this to be the row with the dates
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var data = sh.getDataRange();
var datesrow = sh.getRange(row,data.getColumn(),row,data.getWidth()).getValues();
var today = new Date().setHours(0,0,0,0);
for(var n=0;n<datesrow[0].length;n++){
var date = new Date(datesrow[0][n]).setHours(0,0,0,0);
if(date==today){break};
}
console.log(n);
n++;
sh.getRange(row,n).activate();
}
您在Google电子表格/文档中找到的代码,跳转到打开上的当前日期单元格对您不起作用,因为它只检查第一列。
我稍微修改了一下这段代码,以搜索一行中的日期。
根据需要更改行使用变量。
function onOpen() { // runs automatically
var rowWithDates = 2; // change as needed
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var range = sh.getDataRange()
var data = range.getValues();
var today = new Date().setHours(0,0,0,0);
var diffref = today;
var diff;
var idx;
for(var n=0;n<range.getWidth();n++){
var date = new Date(data[rowWithDates-1][n]).setHours(0,0,0,0);
diff=today-date;
if(diff==0){break}
Logger.log("diffref = "+diffref+" today-date = diff = "+diff);
if(diff < diffref && diff > 0){idx=n ; diffref=diff}
}
if(n==data.length){n=idx}
n++;
sh.getRange(rowWithDates, n).activate();
}
问题内容: 我已经进行了所有设置,将当前日期存储到Java中的变量中。我要弄清楚的是如何存储当前日期之后1年的日期。 这是我当前的日期: 因此,例如,如果今天是今天,它将存储2/18/2013。我正在尝试存储日期2/18/2014。我将如何去做呢? 问题答案: 如果您不想拖动外部库,只需使用 请注意,如果日期是,并且您添加了1年,则将获得
问题内容: 我有这个PHP代码: 我用它来获取当前日期,而我需要未来5年的日期,例如: 我怎样才能做到这一点? 问题答案: 尝试:
我正在尝试将DatePicker日期格式化为简单的数据格式(“yyyy-MM-dd HH: mm: ss Z”)。有人告诉我,我需要使用简单的数据格式将其解析为日期对象-简单的数据格式(“yyyy-MM-dd”),然后将其格式化为我需要的内容,如下所示。但是,我在尝试捕捉块中收到错误“重复局部变量eDate”。任何专家都可以查看我的代码并提出建议吗? 已更新
问题内容: 我在将日期正确插入数据库中时遇到问题。 我使用这种格式,并且正确回显,但是,当我插入 它似乎无法成功运行,时间仍然是00:00:00,如果您能找到很好的解决方案,谢谢。 问题答案: 如果要存储当前时间,请使用MYSQL的函数。 如果需要使用PHP进行格式化,请尝试
问题内容: 有没有一种简单的方法可以将一种日期格式转换为PHP中的另一种日期格式? 我有这个: 但是我当然希望它返回一个当前日期,而不是返回“黎明”。我究竟做错了什么? 问题答案: 第二个参数必须是正确的时间戳(自1970年1月1日以来的秒数)。您正在传递一个字符串,date()无法识别。 您可以使用 strtotime() 将日期字符串转换为时间戳。但是,即使strtotime()也无法识别格式
问题内容: 我接收到来自Twitter的特定日期以特定格式发送的Twitter消息: 我想将这些日期存储在带有djangos DateTimeField字段的postgresql中的“带有时区的时间戳”字段中。但是,当我存储该字符串时,出现此错误: 我可以自动将twitter datetype转换为python datetime时间(在我的应用程序中的其他地方可以保存日期)。 问题答案: 编写这样