문제

Below is a script I am using for a Google Docs Spreadsheet.

These links show what I am doing:

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

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

How can I set up a "flag" so that when I run this script a second time, it doesn't add the perviously added stock items?

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 guess I'm trying to do this: Once the item has been added to inventory, the script adds an x to column i of that line. Then when the script is run again, it skips over the lines with an x in column i

도움이 되었습니까?

해결책

In JavaScript, functions are objects. Objects have properties. So, decorate your function:

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

for (var i = 0; i < 10; i++) {
    myFunction(); // alerts once
}

다른 팁

Designate a cell to hold the flag value, and have the script check that particular cell for the flag value.

Add the values to an array first. Each time you add an item check the array to see if it's already in it. Then loop your array an post to the UI.

Here's a post to help with checking if the array already contains the value. stackoverflow.com/questions/237104/

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top