【问题标题】:Setup flag in JavascriptJavascript 中的设置标志
【发布时间】:2010-12-14 00:52:44
【问题描述】:

以下是我用于 Google Docs 电子表格的脚本。

这些链接显示了我在做什么:

http://i.stack.imgur.com/uGik7.png

http://i.stack.imgur.com/AbKnQ.png

如何设置“标志”,以便在我第二次运行此脚本时,它不会添加以前添加的库存项目?

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName("Purchase Orders");
  var sheet2 = ss.getSheetByName("Inventory");
  var data = sheet1.getDataRange();
  var i_data = sheet2.getDataRange();
  var lastRow = data.getLastRow();
  var iLastRow = i_data.getLastRow();

  for (i=1;i<=lastRow;i++) {
    if (data.getCell(i, 5).getValue() == "stock"){
      for (n=1;n<=iLastRow;n++){
        if (data.getCell(i,3).getValue() == i_data.getCell(n,3).getValue()) {
        i_data.getCell(n, 1).setValue(i_data.getCell(n,1).getValue() + data.getCell(i,2).getValue());
       }
      }
    }

  }
}​

我想我正在尝试这样做:将项目添加到库存后,脚本会在该行的第 i 列添加一个 x。然后当脚本再次运行时,它会跳过 i 列中带有 x 的行

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    指定一个单元格来保存标志值,并让脚本检查该特定单元格的标志值。

    【讨论】:

    • 那么我将如何设置它来做到这一点。将项目添加到库存后,脚本会在该行的第 i 列添加一个 x。然后当脚本再次运行时,它会跳过 i 列中带有 x 的行
    • 您可能已经解决了这个问题,但是任何人...列中的 X 我会完美解决您的问题。您希望在电子表格本身中存储指示已处理每一行的标志,以便在关闭工作表时不会丢失该信息。此外,您(或其他人)可能想知道是否已处理特定行。
    【解决方案2】:

    在 JavaScript 中,函数是对象。对象具有属性。所以,装饰你的功能:

    function myFunction() {
        if (!myFunction.alreadyDoneRunIt) {
            alert('bapt uia');
            myFunction.alreadyDoneRunIt = true;
        }
    }
    
    for (var i = 0; i < 10; i++) {
        myFunction(); // alerts once
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2016-09-11
      • 2017-09-11
      • 2020-09-10
      • 2015-11-28
      • 2013-12-24
      • 1970-01-01
      相关资源
      最近更新 更多