Question

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

Was it helpful?

Solution

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
}

OTHER TIPS

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/

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top