目标是将Orders
工作表中的ColA与Ordered Items
工作表中的ColF进行比较,如果它们匹配,则从ColB中抢夺email
。
该脚本未输出任何错误,但与任一工作表中突出显示的单元格都不匹配。
(注意:这些项目是由应用自动添加的,因此单元格的格式为默认格式,因此当我使用后6位数字作为订单代号(例如49.263Z)时,必须保持这种格式)>
Orders
表
Ordered Items
表
function getEmailFromOrderedItemToOrders(){
var orders = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Orders');
var lr = getLastRow(orders, "A1:G");
Logger.log(lr); //LastRow index
//Get last 'OrderID (Paid at)' value from 'Orders' sheet
var orderIdCol = 1;
var orderId = orders.getRange(lr, orderIdCol).getValue();
Logger.log(orderId); //LastRow 'orderId' value
//Match 'orderId' to 'orderId' in 'Ordered Items' and return col 1
var items = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Ordered Items');
var itemsData = items.getDataRange().getValues();
Logger.log(itemsData[0][1]); //'Purchase Email' col
Logger.log(itemsData[0][5]); //'Paid at' col
for(var i = 0; i<itemsData.length;i++){
if(itemsData[i][5] == orderId){ //Issue here: not comparing values as a match
var email = itemsData[i][1];
Logger.log(email); //Does not print
return i+1;
}
}
}
答案 0 :(得分:1)
这可以通过使用表格公式简单地解决。您将要做的是:
=INDEX( 'Ordered Items!B:B', MATCH(A2, 'Ordered Items!:F:F,0) )
公式基本上说:
答案 1 :(得分:1)
在javascript中,当您比较两个new Date
时,您将得到的值为false
。
原因是当您有两个日期时,它基本上是两个不同的对象。因此,在使用== or ===
时,一个对象不等于另一个对象。因此,一种简单且更好的方法是使用.getTime()将日期转换为数字,该方法将返回从该日期到1970年1月1日的00:00:00经过的毫秒数。
示例代码段
console.log(new Date() === new Date())
console.log(new Date().getTime() === new Date().getTime())