在表格中找出日期并给它上色
Find date in sheet and color it
我试图改变这个脚本搜索日期(现在)和颜色在工作表中找到的日期。
原始脚本;
function findThis(val) {
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var searchStr = "Foo";
Logger.log(res);
var res = findValue(data, searchStr);
if (res != null) {
Browser.msgBox("Found in row " + res[0] + ", column " + res[1]);
}
}
function findValue(data, obj) {
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
if (data[i][j] == obj) {
return [i, j];
}
}
}
return null;
}
我的试错脚本;
我认为范围是在res,但当我想getRange它不接受res坐标,我已经尝试了getA1Notation()我做错了,但仍在学习和尝试,也许你可以帮助。
function findThis(val) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // toevoeging
var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
var Today = new Date();
var date = Utilities.formatDate(Today,"GMT+100","dd-M-yyyy");
Logger.log(date)
var searchStr = date;
var res = findValue (data, searchStr);
if (res != null) {
Logger.log(res);
Logger.log(res[0]+", "+res[1]);
var Range = (res[0]+", "+res[1]);
var x = (res[0]+", "+res[1]);
//var C = range.getColumnIndex(res);
var range = Range.getA1Notation()
Logger.log(range);
var value = sheet.getRange([x]).getValue(); //toegevoegd
Logger.log(value);
Logger.log(x);
sheet.getRange(x).setBackgroundColor('Yellow');
Browser.msgBox("Found in row " + res[0] + ", column " + res[1]);
}
}
function findValue(data, obj) {
for (var i = 0; i < data.length; i++) {
for (var j = 0; j < data[i].length; j++) {
if (data[i][j] == obj) {
return [(i+1), (j+1)];
}
}
}
看起来你在理解javascript对象和它们的方法时犯了一些简单的错误。(Google apps-script, GAS,是javascript的衍生物,所以任何可以帮助你学习基本javascript的资源都可以在这里提高你的技能。)
Range是类Range的对象,而电子表格中范围的a1Notation表达式(例如:"A1"或"A:Z")是String类的对象。现在,String具有一些属性和方法,这些属性和方法对于执行您可能希望对文本字符串执行的操作非常有用。另一方面,Range对象有不同的属性和适合它的方法——它们在这里有文档说明。要使它们在脚本中的变量对象上工作,该变量必须属于Class Range。让我们看看代码中的这一行:
var Range = (res[0]+", "+res[1]);
那一行创建了一个名为Range的变量,它是一个字符串,包含类似"15, 16"
的内容。然后,当你尝试Range.getA1Notation()
时,它会失败,因为字符串没有那个方法。你需要做的是使用一个实际的Range对象。这里有一种方法可以为您工作,只需替换当前脚本中相应的块:
if (res !== null) {
var range = sheet.getRange(res[0],res[1]);
range.setBackgroundColor('Yellow');
Browser.msgBox("Found at " + range.getA1Notation());
}
在您的示例中,您不需要变量value
,但是如果您这样做了,那么您将如何获得它。
var value = range.getValue(); //toegevoegd
Logger.log(value);
就像@Sergeinsas,我对你比较日期的方式有些担心。但如果它适合你,那就太好了。
相关文章:
- 格式为nnnnnnnn的字符串在电子表格中显示为日期或不正确
- 表格报告-动态比较特定用户的输入日期和现有日期
- setHours()从电子表格导入的日期创建谷歌日历事件时出错-应用程序脚本
- 检查日期并使用谷歌脚本编辑谷歌表格中的相邻单元格
- 从谷歌电子表格检索单元格日期到HTML服务
- 将表格单元格中的日期模式与 jQuery 匹配
- 检查日期是否在过去,无需提交表格
- Javascript:如果列包含任何日期,则在 google 电子表格中移动行 (1/2/2015)
- 谷歌电子表格的日期戳
- 根据所选日期从客户端填充表格
- 表格中显示日期的NaN
- 如何在表格中计算两个日期之间的差值?日期(日、月、年)在3个不同的下拉框中
- 如何使用甘特-工具提示属性在角表格中显示用户输入格式的日期
- 在表格中设置12个月后的新日期
- 在表格中找出日期并给它上色
- HTML表格中的实际日期
- 在提交表格前计算并显示2个日期之间的差异
- 如何控制从电子表格中读取的日期格式,并在电子邮件中显示为表格
- 谷歌电子表格-字符串值转换为日期
- Google-app-script:在电子表格中使用单元格行[]的javascript电子邮件正文中的日期格式问题