سؤال

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