我正在努力解决这个问题。我需要搜索今天的日期,一旦匹配它返回列号(完成!)。我需要一个脚本来对行号做同样的事情。如果我在该工作表上只保留一个表,我的脚本工作正常,但我有更多的表,如果我使用values.length -1将返回工作表的最后一行。此外,每个表可能没有固定的行号,因此需要是动态的。
这是我到目前为止的脚本:
function getTodaysTotal() {
function toDateFormat(date) {
try {return date.setHours(0,0,0,0);}
catch(e) {return;}
}
var values = SpreadsheetApp
.openById("id")
.getSheetByName("Q3 - W27 - 39")
.getDataRange()
.getValues();
var today = toDateFormat(new Date());
var todaysColumn = values[5].map(toDateFormat).map(Number).indexOf(+today);
var output = values[values.length - 1][todaysColumn];
var emailDate = Utilities.formatDate(new Date(today),"GMT+1", "dd/MM/yyyy");
那是我桌子的屏幕截图。
希望它有意义。我有列号,我需要找到包含Total的行号。
谢谢!
亲切的问候
答案 0 :(得分:0)
你必须遍历一个可能是最快的数据数组。
查看以下脚本并在现有脚本中实施。
不确定它是否只是您要查找的一列,例如C列:
for (i in values){
if (values[i][2]=='Total'){
Logger.log(i);
var nr = i
}
}
var nr现在包含i作为行号,它找到了单词" Total"在C栏([i]之后的#2)。
然后,您可以在第一个右括号后的任何内容中使用该变量。
答案 1 :(得分:0)
我将此添加到我的脚本中,但我在输出时未定义。如果我使用记录器日志,我得到正确的值,但我也得到一个空值(未定义)。所以我只需要第一个值。
function getTodaysTotal() {
function toDateFormat(date) {
try {return date.setHours(0,0,0,0);}
catch(e) {return;}
}
var values = SpreadsheetApp
.openById("id")
.getSheetByName("Q3 - W27 - 39")
.getDataRange()
.getValues();
for (i in values){
if (values[i][0]=='Total'){
var nr = i;
var newNr = parseInt(nr);
// Logger.log(nr);
var today = toDateFormat(new Date());
var todaysColumn =
values[5].map(toDateFormat).map(Number).indexOf(+today);
var output = values[newNr][todaysColumn];
Logger.log(output);
var emailDate = Utilities.formatDate(new Date(today),"GMT+1", "dd/MM/yyyy");
// Logger.log(todaysColumn);
// Logger.log(output);
// return values[values.length - 1][todaysColumn];
}
}
if (output == undefined) {
GmailApp.sendEmail("email@company.com", "test data", "Today, " +emailDate +" we had no calls made or no values are inputed.");
}
else if (output == "") {
GmailApp.sendEmail("email@company.com", "test data", "Today, " +emailDate +" we had no calls made or no values are inputed.");
}
else {
GmailApp.sendEmail("email@company.com", "test data", "Today, " +emailDate +" we had " +output + " calls made.");
}
}