Setup flag in Javascript
-
09-10-2019 - |
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
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/