【发布时间】:2021-06-15 10:21:32
【问题描述】:
当我根据第 4 行中找到的日期条件在另一张表中搜索数据时,我得到了下表来填充(范围 D6:J15):
我的困难是连接数据,因为它们符合标准。
这是我正在处理的代码:
/* @OnlyCurrentDoc */
function editarPrevProd() {
const lock = LockService.getScriptLock();
lock.tryLock(3000);
if (lock.hasLock()) {
var sourceSheet = 'PrevProdDB2';
var destinationSheet = 'Previsão Entreposto';
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sourceSheet);
var ActiveSheetName = ss.getActiveSheet().getName();
var LastRowSource = sheet.getLastRow();
var LastColumnSource = sheet.getLastColumn();
var values = sheet.getRange(2,1,LastRowSource,9).getValues();
var csh = ss.getSheetByName(destinationSheet);
var itens = csh.getRange("I40:J57");
var data = [];
var weekNo = csh.getRange("B4").getValue();
var weekDates = csh.getRange("D4:J4").getValues();
if (weekNo == "") {
Browser.msgBox("Escolher uma data e tente novamente!");
return;
}
//var clearRng = ["K34:K35", "N34:N35", "I40:K"];
//csh.getRangeList(clearRng).clearContent();
for (var i = 0; i < values.length; i++) {
if (values[i][7] == weekNo) {
data.push(values[i]);
//break;
}
}
var dias = 0;
var prevData = [];
for (var j = 0; j < weekDates.length; j++) {
dias = dias + 1;
Logger.log("Dias da Semana: " + dias);
for (var a = 0; a < data.length; a++) {
if (weekDates[j].valueOf() == data[a][0].valueOf()){
prevData.push(data[a][4]);
}
}
}
//map columns whose data will be set in the header.
var user = data.map(function(e){return e[5];});
var lastUpdate = data.map(function(e){return e[6];});
//Copy data array to destination sheet
csh.getRange("I1").setValue(user);
csh.getRange("I2").setValue(lastUpdate);
//csh.getRange("E6").setValue(timeStamp);
//If you wanted to set arrays in the form of
//a table, you'd use this below instead
var seg = data.map(function(e) {return [e[3]];});
var ter = data.map(function(e) {return [e[4]];});
var qua = data.map(function(e) {return [e[5]];});
var qui = data.map(function(e) {return [e[6]];});
var sex = data.map(function(e) {return [e[7]];});
var sab = data.map(function(e) {return [e[8]];});
var dom = data.map(function(e) {return [e[9]];});
//csh.getRange(6,4,data.length,1).setValues(seg);
lock.releaseLock();
}
}
这是文件的示例。请注意,我正在处理的 gs 文件名为 SalvaPrevProducao。
https://docs.google.com/spreadsheets/d/1NOWkzQIAPPdZdxeeTR7Id2v8LR00_u06uPhHs3tzLuU/edit?usp=sharing
【问题讨论】:
-
在你的示例图片中,两张图片都是示例输入的情况?如果我的理解是正确的,你能提供示例输出情况吗?因为我不确定您要输入
range D6:J15的值。我为此道歉。而且,为了确认表格中的每个值,您能否提供样本电子表格?因为在你的情况下,我无法理解日期是否是日期对象。 -
这是XY problem吗?考虑共享一个可公开编辑的sample spreadsheet,其中包含逼真的数据,并在那里显示您手动输入的预期结果。使用 Insert > Note 在电子表格中描述您想要的内容。
-
是的,请分享一个样本表或其他包含样本数据的东西,我们可以用它来测试函数。
-
嗨,@Tanaike,我已添加文件链接。谢谢!
-
感谢您回复并提供示例电子表格。根据您的附加信息,我提出了一个答案。你能确认一下吗?如果这不是您期望的结果,我深表歉意。
标签: google-apps-script google-sheets