4

以下は、GoogleDocsSpreadsheetに使用しているスクリプトです。

これらのリンクは、私が行っていることを示しています。

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

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

このスクリプトを2回実行したときに、以前に追加された在庫アイテムが追加されないように、「フラグ」を設定するにはどうすればよいですか。

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が含まれる行がスキップされます。

4

2 に答える 2

3

フラグ値を保持するセルを指定し、スクリプトにその特定のセルのフラグ値をチェックさせます。

于 2010-12-14T02:27:35.610 に答える
2

JavaScriptでは、関数はオブジェクトです。オブジェクトにはプロパティがあります。だから、あなたの関数を飾ります:

function myFunction() {
    if (!myFunction.alreadyDoneRunIt) {
        alert('bapt uia');
        myFunction.alreadyDoneRunIt = true;
    }
}

for (var i = 0; i < 10; i++) {
    myFunction(); // alerts once
}
于 2010-12-14T23:42:33.990 に答える