Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用googlesheet进行库存管理_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 使用googlesheet进行库存管理

Google apps script 使用googlesheet进行库存管理,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我是一家企业,我使用Gas进行确认和管理,在买家在我的店铺买了一些东西后,我会打电话确认订单。如果买家接受订单,我会在订单C栏写上“ok”,我的代码将fid表单库存中的产品,并减去订单D栏中的产品。但我的代码运行时间很长,我不希望这样,例如,当我的两个员工在同一时间呼叫,他们在同一时间输入ok时,GAS无法快速计算,它只是减去1,谁能帮助我提高代码的运行时间,谁有其他解决方案。 这是我的密码 function onEdit(e) { var ss = SpreadsheetApp.get

我是一家企业,我使用Gas进行确认和管理,在买家在我的店铺买了一些东西后,我会打电话确认订单。如果买家接受订单,我会在订单C栏写上“ok”,我的代码将fid表单库存中的产品,并减去订单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);
    }
}
函数onEdit(e){
var ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DATA');
var范围=e范围;
var s=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“库存”);
varⅠ,j;
如果(range.getColumn()==3&&(range.getValue()==“确定”| | range.getValue()==“取消”)){
var fullListStr=ss.getRange(range.getRow(),4.getValue();
var listShirts=fullListStr.split(“,”);
对于(i=0;i
这是我的床单

  • 不需要第一个“for”循环。您可以将
    trim()
    操作组合到另一个“for”循环中
  • 不需要内部“for”循环。将衬衫ID的2D数组转换为1D数组,然后搜索衬衫ID的索引。衬衫ID的索引与行号加1相同
  • 不要在“for”循环中获取长度-定义长度并分配一次
  • 您的列编号是静态的,不需要在每个循环中分配
  • 通过检查列号并在编辑不在正确列中时停止代码,可以去除一层嵌套块
我还没有测试过这段代码。我只是把它拼凑起来。但它应该为您提供需要做什么来改进它的概念

代码:

函数onEdit(e){
var ArrayListCheckId,列,currentProduct,i,j,L,范围,行,s,ss,thisShirt;
列=5;
ss=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('DATA');
range=e.range;
s=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“库存”);
如果(range.getColumn()!==3){return;}
如果(range.getValue()!=“确定”| range.getValue()!=“取消”){return;}
var fullListStr=ss.getRange(range.getRow(),4.getValue();
var listShirts=fullListStr.split(“,”);
L=长度;
var listCheck=s.getRange(“F1:F5”).getValues();
ArrayListCheckId=listCheck.toString().split(“,”;//将2D数组转换为1D数组
对于(i=0;i
什么是“很长时间”?你需要在你的代码中添加一些注释,如果可以的话,一个指向电子表格的链接也可能有用。@JayJenkins抱歉,我是个新手,我一个月前刚学会编码
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);

}