google-apps-script - 为在不同工作表上找到的多个搜索词运行脚本
问题描述
我正在尝试从 aSCORESHEET
中填充 a REPORTSHEET
,使用 aREFERENCESHEET
来整理搜索词和目标单元格。
我正在运行的脚本如下。这个想法是脚本searchDate
在 中找到 'REFERENCESHEET
并使用它们来定位 中的数据列REPORTSHEET
:
function superAuto() {
var report = SpreadsheetApp.openById('REPORTSHEET');
var reportData = report.getDataRange().getValues();
var reference = SpreadsheetApp.openById('REFERENCESHEET');
var referenceData = reference.getDataRange().getValues();
var scorecard = SpreadsheetApp.openById('SCORESHEET');
var scorecardData = scorecard.getDataRange().getValues();
var tExpenses = "Total Expenses";
for(n=0;n<referenceData.length;++n){
var searchDate = referenceData[n][0] ;
Logger.log (searchDate)
}
var column = columnfinder(searchDate);
for (var a = 0; a < referenceData.length; a++) {
var refRow = referenceData[a];
for (var i = 0; i < reportData.length; i++) {
var row = reportData[i];
if (row[0] == tExpenses && refRow[0] == searchDate) {
scorecard.getRange(refRow[5]).setValue(row[column]);
}
}
}
}
function columnfinder(find) {
var report = SpreadsheetApp.openById('REPORTSHEET');
var reportData = report.getDataRange().getValues();
var reference = SpreadsheetApp.openById('REFERENCESHEET');
var referenceData = reference.getDataRange().getValues();
for(var j=0, jLen=reportData.length; j<jLen; j++) {
for(var k=0, kLen=reportData[0].length; k<kLen; k++) {
if(find == reportData[j][k]) {
Logger.log(k);
return (k);}
}
}
}
从广义上讲,代码有效,就好像我将其定义searchDate
为我正在寻找的术语之一(例如 Jan-21),它一切正常。问题在于,在查找多个搜索词时似乎并没有这样做 - 因此填充多行 - 根据:
for(n=0;n<referenceData.length;++n){
var searchDate = referenceData[n][0] ;
Logger.log (searchDate)
}
日志告诉我它searchDate
在 REFERENCESHEET 中找到 ',但它无法运行它们function columnfinder
(我没有得到第二个记录器的日志)。
我怀疑答案就在我收到的对这个想法的早期版本的一个很好的答案中的某个地方——如何为 setValue 返回多个列值——但我无法让它适合。有什么想法吗?
编辑:请查找示例参考表和报告表以获取更多信息:
解决方案
日志告诉我它在 REFERENCESHEET 中找到了 searchDate,但它无法通过函数 columnfinder 运行它们(我没有得到第二个记录器的日志)
您不在循环columnfinder
内执行。for
试试这个:
for(n=0;n<referenceData.length;++n){
var searchDate = referenceData[n][0] ;
Logger.log(searchDate);
columnfinder(searchDate); // modified code
}
你会得到两者logs
。
对不起,如果我误解了你的问题。
推荐阅读
- python - 如何根据数据框中的条件将元素保留在列表中?
- sql - 空表视图
- c# - 按钮多点单击问题 Xamarin.Forms
- c# - Qt 的 qChecksum 里面是什么?
- bash - 在 shell 脚本中使用 curl 创建名称变量并运行 for 循环以将文件内容添加到 api,但仅添加名称
- java - 为什么 java 中的 try/catch 不适用于我的案例?
- amazon-web-services - 无法使用 aws cloudformation select 和 findinmap
- postgresql - 创建备份作业后没有任何反应
- javascript - 从 Google 表格到 HTML 的日期格式
- amazon-web-services - 从 boto3 脚本创建 AWS DMS 任务的问题