[英]Google Apps Scripts - For Loop Issue works on false statement instead of true
/** -- For Loop to start pairing VIN numbers to parts list -- **/
console.log('CompleteVIN: ');
console.log(completeVIN);
console.log(completeVIN[1].length);
console.log('CompleteParts: ');
console.log(completeParts);
console.log(completeParts[1].length);
var vinPartsCombine = [];
/** For loop */
for (j = 0; j < completeVIN[1].length; j++) {
for (i = 0; i < completeParts[0].length; i++){
if (completeVIN[1][j] === completeParts[1][i]) {
vinPartsCombine.push(completeVIN[0][j],completeParts[0][i]);
};
};
};
console.log(completeVIN[1][j] === completeParts[1][i]);
console.log(vinPartsCombine);
結果:
CompleteVIN:
[ [ [ 'KG257653' ],
[ 'KG250444' ],
[ 'K1239114' ],
[ 'FG160157' ],
[ 'LKA41783' ],
[ 'LKB72564' ] ],
[ [ 7653 ],
[ 444 ],
[ 9114 ],
[ 'Estimate_to_Repair' ],
[ 'transit (1)' ],
[ 'transit' ] ] ]
6
CompleteParts:
[ [ [ 'Repl LT Side bracket' ],
[ 'Repl LT Filler panel US built' ],
[ 'Repl LT H\'lamp bracket' ],
[ 'Repl LT Fender' ],
[ 'Repl LT Nameplate "SILVERADO"' ],
[ 'Repl Bumper assy single' ],
[ 'Repl Cover Car' ],
[ 'Repl Cover Car' ],
[ 'Repl Applique upper w/o special trim' ],
[ 'Repl Corrosion protection primer' ],
[ 'Repl Cover Car' ],
[ 'Replace LT Fender (Aftermarket)' ],
[ 'Replace LT Nameplate "SILVERADO"' ],
[ 'Repl LT Lower molding' ],
[ 'Repl LT End cap w/o blind spot' ],
[ 'Repl LT Side extn w/o extended frame' ],
[ 'Repl LT Bumper outer support' ],
[ 'Repl LT Bumper inner support' ],
[ 'Repl LT Bumper' ],
[ 'Repl Aerial assembly' ],
[ 'Repl Cover Car' ],
[ 'Repl Corrosion protection primer' ],
[ 'Repl Cover Car' ],
[ 'Repl Cover Car' ],
[ 'Repl Corrosion protection primer' ] ],
[ [ 7653 ],
[ 7653 ],
[ 7653 ],
[ 7653 ],
[ 7653 ],
[ 7653 ],
[ 7653 ],
[ 444 ],
[ 9114 ],
[ 9114 ],
[ 9114 ],
[ 'Estimate_to_Repair' ],
[ 'Estimate_to_Repair' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit (1)' ],
[ 'transit' ],
[ 'transit' ],
[ 'transit' ] ] ]
25
true
[]
我的 for 循環不會按我想要的方式工作,但是當我將條件更改為時,= 它會運行。 但不是我想要的 output。
for 循環是在源匹配時按源搜索每個數組,然后將其推送到 vinPartsCombine 數組,以便將其與 vin 編號和部件描述配對。 在源不匹配之前,它將切換到具有新源名稱的下一個 vin 編號元素。
completeVIN = [[[ 'KG257653' ], [ 'KG250444' ], [ 'K1239114' ], [ 'FG160157' ], [ 'LKA41783' ], [ 'LKB72564' ]], [[ 7653 ], [ 444 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit' ]]]; CompleteParts = [ [ [ 'Repl LT Side bracket' ], [ 'Repl LT Filler panel US built' ], [ 'Repl LT H\'lamp bracket' ], [ 'Repl LT Fender' ], [ 'Repl LT Nameplate "SILVERADO"' ], [ 'Repl Bumper assy single' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Applique upper w/o special trim' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Replace LT Fender (Aftermarket)' ], [ 'Replace LT Nameplate "SILVERADO"' ], [ 'Repl LT Lower molding' ], [ 'Repl LT End cap w/o blind spot' ], [ 'Repl LT Side extn w/o extended frame' ], [ 'Repl LT Bumper outer support' ], [ 'Repl LT Bumper inner support' ], [ 'Repl LT Bumper' ], [ 'Repl Aerial assembly' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ] ], [ [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 444 ], [ 9114 ], [ 9114 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit' ], [ 'transit' ], [ 'transit' ] ] ]; var vinPartsCombine = []; /** For loop */ for (j = 0; j < completeVIN[1].length; j++) { for (i = 0; i < CompleteParts[1].length; i++){ if (completeVIN[1][j] == CompleteParts[1][i]) { vinPartsCombine.push(completeVIN[0][j],CompleteParts[0][i]); }; }; }; console.log(completeVIN[1][j] === CompleteParts[1][i]); console.log(vinPartsCombine);
首先 Function 在我用來弄清楚發生了什么的電子表格上構建了幾個表格。 第二個 function 使用電子表格中的這些表來匯總數據,我認為通過旋轉數據以您想要的方式。
function buildtablescript() {
const completeVin = [[['KG257653'], ['KG250444'], ['K1239114'], ['FG160157'], ['LKA41783'], ['LKB72564']], [[7653], [444], [9114], ['Estimate_to_Repair'], ['transit (1)'], ['transit']]];
const completeParts = [[['Repl LT Side bracket'], ['Repl LT Filler panel US built'], ['Repl LT H\'lamp bracket'], ['Repl LT Fender'], ['Repl LT Nameplate "SILVERADO"'], ['Repl Bumper assy single'], ['Repl Cover Car'], ['Repl Cover Car'], ['Repl Applique upper w/o special trim'], ['Repl Corrosion protection primer'], ['Repl Cover Car'], ['Replace LT Fender (Aftermarket)'], ['Replace LT Nameplate "SILVERADO"'], ['Repl LT Lower molding'], ['Repl LT End cap w/o blind spot'], ['Repl LT Side extn w/o extended frame'], ['Repl LT Bumper outer support'], ['Repl LT Bumper inner support'], ['Repl LT Bumper'], ['Repl Aerial assembly'], ['Repl Cover Car'], ['Repl Corrosion protection primer'], ['Repl Cover Car'], ['Repl Cover Car'], ['Repl Corrosion protection primer']], [[7653], [7653], [7653], [7653], [7653], [7653], [7653], [444], [9114], [9114], [9114], ['Estimate_to_Repair'], ['Estimate_to_Repair'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit (1)'], ['transit'], ['transit'], ['transit']]];
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet4');
sh.getDataRange().setFontWeight('normal').setBackground('#ffffff');
sh.clearContents();
sh.getRange(1, 1).setValue('CompleteVINs:').setFontWeight('bold').setBackground('lightyellow');
let nr = sh.getLastRow() + 1;
sh.getRange(nr, 1, completeVin[0].length, completeVin[0][0].length).setValues(completeVin[0]).setHorizontalAlignment('left');
sh.getRange(nr, 2, completeVin[1].length, completeVin[1][0].length).setValues(completeVin[1]).setHorizontalAlignment('left');
SpreadsheetApp.flush();
nr = sh.getLastRow() + 1;
sh.getRange(nr, 1).setValue('CompleteParts:').setFontWeight('bold').setBackground('lightyellow');
SpreadsheetApp.flush();
nr = sh.getLastRow() + 1;
sh.getRange(nr, 1, completeParts[0].length, completeParts[0][0].length).setValues(completeParts[0]).setHorizontalAlignment('left');
sh.getRange(nr, 2, completeParts[1].length, completeParts[1][0].length).setValues(completeParts[1]).setHorizontalAlignment('left');
}
以上function制作的表格:
完成VIN: | |
---|---|
KG257653 | 7653 |
KG250444 | 444 |
K1239114 | 9114 |
FG160157 | Estimate_to_Repair |
LKA41783 | 過境 (1) |
LKB72564 | 過境 |
完成部分: | |
---|---|
Repl LT 側支架 | 7653 |
Repl LT 填充面板 美國制造 | 7653 |
Repl LT H'燈支架 | 7653 |
Repl LT 擋泥板 | 7653 |
Repl LT 銘牌“SILVERADO” | 7653 |
Repl 保險杠總成單 | 7653 |
復蓋車 | 7653 |
復蓋車 | 444 |
Repl 貼花鞋面,無特殊飾邊 | 9114 |
Repl 防腐底漆 | 9114 |
復蓋車 | 9114 |
更換 LT 擋泥板(售后市場) | Estimate_to_Repair |
替換 LT 銘牌“SILVERADO” | Estimate_to_Repair |
Repl LT 下成型 | 過境 (1) |
Repl LT 端蓋無盲點 | 過境 (1) |
Repl LT Side extn w/o 擴展框架 | 過境 (1) |
Repl LT 保險杠外支撐 | 過境 (1) |
Repl LT 保險杠內支撐 | 過境 (1) |
Repl LT 保險杠 | 過境 (1) |
Repl 空中裝配 | 過境 (1) |
復蓋車 | 過境 (1) |
Repl 防腐底漆 | 過境 (1) |
復蓋車 | 過境 |
復蓋車 | 過境 |
Repl 防腐底漆 | 過境 |
現在總結數據的function:
function pivotscript() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet4');
const cVrow = sh.createTextFinder('CompleteVINs:').findAll()[0].getRow();
const cProw = sh.createTextFinder('CompleteParts:').findAll()[0].getRow();
const cVvs = sh.getRange(cVrow + 1, 1, cProw - cVrow - 1, sh.getLastColumn()).getValues();
const cPvs = sh.getRange(cProw + 1, 1, sh.getLastRow() - cProw - 1, sh.getLastColumn()).getValues();
const pObj = { pA: [], vA: [] };
cVvs.forEach((r, i) => {
if (!pObj.hasOwnProperty(r[1])) {
pObj[r[1]] = {vin:r[0],partA:[]};
pObj.pA.push(r[1]);
} else {
SpreadsheetApp.getUi().alert('Vin Table has duplicates');
return;
}
});//build the table
cPvs.forEach((r, i) => {if (pObj.hasOwnProperty(r[1])) {pObj[r[1]].partA.push(r[0]);}});
let html = '<style>th,td{border:1px solid black;padding:5px;}</style><table><tr><th>Property</th><th>Vin</th><th>Parts</th></tr>';
pObj.pA.forEach((p,i)=>{
html+=Utilities.formatString('<tr><td>%s</td><td>%s</td><td>%s</td></tr>',p,pObj[p].vin,pObj[p].partA.join('<br />'));
});
html+='</table>'
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(html).setWidth(800).setHeight(600),'Summary');
}
匯總表對話框:
我想到了。 我最初通過在元素中添加元素使其變得更加復雜......例如:[0][0][0]。 無論如何,這就是我所做的。
completeVIN = [[[ 'KG257653' ], [ 'KG250444' ], [ 'K1239114' ], [ 'FG160157' ], [ 'LKA41783' ], [ 'LKB72564' ]], [[ 7653 ], [ 444 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit' ]]]; completeParts = [ [ [ 'Repl LT Side bracket' ], [ 'Repl LT Filler panel US built' ], [ 'Repl LT H\'lamp bracket' ], [ 'Repl LT Fender' ], [ 'Repl LT Nameplate "SILVERADO"' ], [ 'Repl Bumper assy single' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Applique upper w/o special trim' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Replace LT Fender (Aftermarket)' ], [ 'Replace LT Nameplate "SILVERADO"' ], [ 'Repl LT Lower molding' ], [ 'Repl LT End cap w/o blind spot' ], [ 'Repl LT Side extn w/o extended frame' ], [ 'Repl LT Bumper outer support' ], [ 'Repl LT Bumper inner support' ], [ 'Repl LT Bumper' ], [ 'Repl Aerial assembly' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ], [ 'Repl Cover Car' ], [ 'Repl Cover Car' ], [ 'Repl Corrosion protection primer' ] ], [ [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 7653 ], [ 444 ], [ 9114 ], [ 9114 ], [ 9114 ], [ 'Estimate_to_Repair' ], [ 'Estimate_to_Repair' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit (1)' ], [ 'transit' ], [ 'transit' ], [ 'transit' ] ] ]; var vinPartsCombine = []; /** For loop */ for (j = 0; j < completeVIN[1].length; j++) { for (i = 0; i < completeParts[1].length; i++){ /** console.log(completeVIN[1][j]); console.log(completeParts[1][i]); console.log(typeof(completeVIN[1][j])); console.log(typeof(completeParts[1][i])); */ console.log(completeVIN[1][j][0] == completeParts[1][i][0]); if (completeVIN[1][j][0] == completeParts[1][i][0]) { vinPartsCombine.push([completeVIN[0][j][0],completeParts[0][i][0]]); }; }; }; /** console.log(completeVIN[1][j] === completeParts[1][i]); console.log(typeof(completeVIN[1][0][0])); */ console.log(vinPartsCombine);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.