我是一家公司,我正在使用Gas进行确认和管理,买方在我的商店中购买了一些东西后,我会打电话确认是否已接受买方的订单,如果买方接受了订单,我会在订单表的C列中输入ok,我的代码将表库存中的产品,并将减去从表Order的D列创建的产品。但是我的代码运行时间很长,我不希望这样做,例如当我的两个员工同时致电并且他们在同一时间点OK时,GAS无法计算得足够快,它只有负1,可以帮助我缩短代码的运行时间,或者可以提供其他解决方案。 这是我的代码
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DATA');
var range = e.range;
var s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Inventory");
var i, j;
if (range.getColumn() == 3 && (range.getValue() == "ok" || range.getValue() == "cancel")) {
var fullListStr = ss.getRange(range.getRow(), 4).getValue();
var listShirts = fullListStr.split(",");
for (i = 0; i < listShirts.length; i++) {
listShirts[i] = listShirts[i].trim();
}
var listCheck = s.getRange("F1:F5").getValues();
for (i = 0; i < listShirts.length; i++) {
for (j = 1; j < listCheck.length; i++) {
if (listShirts[i] == listCheck[j][0]) {
var row = j + 1;
var column = 5;
var currentProduct = s.getRange(row, column).getValue();
currentProduct--;
s.getRange(row, column).setValue(currentProduct);
break;
}
}
}
// var currentProduct = s.getRange(2, 5).getValue();
// currentProduct--;
// s.getRange(2, 5).setValue(currentProduct);
Logger.log(currentProduct)
Logger.log(listShirts);
Logger.log(listCheck);
}
}
这是我的床单
答案 0 :(得分:0)
trim()
操作合并到另一个“ for”循环中。我尚未测试此代码。我只是把它放在一起。但是它应该为您提供需要改进的概念。
代码:
function onEdit(e) {
var arrayListCheckIDs,column, currentProduct, i, j, L, range, row, s, ss, thisShirt;
column = 5;
ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DATA');
range = e.range;
s = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Inventory");
if (range.getColumn() !== 3) {return;}
if (range.getValue() !== "ok" || range.getValue() !== "cancel") {return;}
var fullListStr = ss.getRange(range.getRow(), 4).getValue();
var listShirts = fullListStr.split(",");
L = listShirts.length;
var listCheck = s.getRange("F1:F5").getValues();
arrayListCheckIDs = listCheck.toString().split(",");//Convert 2D array to 1D array
for (i = 0; i < L; i++) {
thisShirt = listShirts[i].trim();
row = arrayListCheckIDs.indexOf(thisShirt) + 1;
if (row === -1) {continue;}//There was no shirt ID found in the array of shirt IDs
currentProduct = s.getRange(row, column).getValue();
currentProduct--;
s.getRange(row, column).setValue(currentProduct);
break;
}
// var currentProduct = s.getRange(2, 5).getValue();
// currentProduct--;
// s.getRange(2, 5).setValue(currentProduct);
Logger.log(currentProduct)
Logger.log(listShirts);
Logger.log(listCheck);
}