【发布时间】:2019-12-03 15:25:17
【问题描述】:
我正在尝试编写一个脚本来根据另一张纸上的零件清单更新我的库存。我希望它检查一张纸上一列的每一行,检查它是否与另一张纸上另一列中的任何单元格匹配(就像查找表一样。)如果该语句为真,我希望它减去我的零件清单上的编号来自库存中的编号。
我现在将检查零件清单上的零件编号是否与库存清单上同一行的零件编号匹配。这确实有效。如果不匹配,则让它检查下一行的该零件号是行不通的。
我认为 if/else 语句应该这样做,但我不知道如何表达它。我使用文件迭代器在文件夹中搜索,概念似乎相似,但我不确定如何让它遍历行。
可能还有一种更简单/更简洁的方法来设置它,但我对 Google Scripts 还很陌生,我是根据我以前做过的类似任务来设计它的。
var ss = SpreadsheetApp.getActive().getId()
var bomtactics = Sheets.Spreadsheets.Values.get(ss, 'BOM!A5:M2004')
var invtactics = Sheets.Spreadsheets.Values.get(ss, 'Inv Temp!A2:Q1658')
var invpartno = Sheets.Spreadsheets.Values.get(ss,'Inv Temp!A2:A1658');
var invpartqty = Sheets.Spreadsheets.Values.get(ss,'Inv Temp!M2:M1658');
for(var i = 0; i < bomtactics.values.length; i++){
var BOMquantity = bomtactics.values[i][0];
var BOMpartnum = bomtactics.values[i][1];
var invpartnum = invtactics.values[i][0];
var invquantity = invtactics.values[i][12];
var newqty = invquantity - BOMquantity
Logger.log("New Quantity: ", newqty)
//This works if the Bill of Materials list is an exact match in placement with the inventory list
if(BOMpartnum == invpartnum){
SpreadsheetApp.openById(ss).getRange('Inv Temp!M'+(i+2)).setValue(newqty).setFontColor('Red');
SpreadsheetApp.flush();
}
else
{
// How to get it to check multiple records like a lookup table.
}
示例电子表格链接:
【问题讨论】:
-
快速澄清问题。当你说,“如果不匹配,让它检查下一行的那个零件号是行不通的”,如果不匹配,你是否需要它检查库存列表中的每一行在同一行中找到,还是只需要检查 next 行?
-
我希望它每隔一行检查一次,直到找到匹配项。
-
查看示例电子表格会很有帮助。
标签: for-loop if-statement google-apps-script google-sheets