Как пройти по столбцу, пока не найду определенное число?

Я пытаюсь написать простой скрипт для электронной таблицы Google Docs. Две ссылки ниже - это снимки экрана листов, для которых я пишу сценарий.

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

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

В листах заказов на закупку, если столбец e == "запас", мне нужен, чтобы найти номер детали и скорректировать количество на листе "Инвентарь". Беллоу - это начало того, что я пытаюсь сделать. Кто-нибудь может мне помочь?

function updateInventoryFromPurchaseOrders() {
  var purchaseOrders = {}; // A mapping of partNumber => quantity.
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Purchase Orders');
  if (sheet) {
    // For each row, if column "E" == "stock" then set partNumber, quantity.
    purchaseOrders[partNumber] = quantity;
  }
  // Now purchaseOrders should look like {'SL249':5, 'ML50':1, 'MWF':1}

  sheet = ss.getSheetByName('Inventory');
  if (sheet) {
    // For each row, set quantity, partNumber.
    var purchased = purchaseOrders[partNumber];
    // Set column "A" value = quantity + purchased
  }
}

Спасибо за помощь.


person David    schedule 13.12.2010    source источник
comment
.focusout(): api.jquery.com/focusout   -  person sje397    schedule 13.12.2010


Ответы (2)


javascript не поддерживает foreach - есть способ обойти это, в том числе реализовать механизм самостоятельно.

Если это разовое исправление и вы скоро перейдете на другой язык, я бы посоветовал сделать следующее:

for( var CurrentRow=0; CurrentRow < DetermineMaxRows(); CurrentRow++ ) {
    if(isColumnEEqualStock()){
        //Things you want to do
    }
}

Нечто подобное для итерации по строкам и столбцам ...

Если вы хотите реализовать свой собственный foreach, загляните на этот сайт.

Если вы планируете расширить свои усилия по Javascript, подумайте о тексте ссылки.

В противном случае подумайте о создании апплетов на Java и их реализации вместо сценария.

person Johannes    schedule 13.12.2010
comment
Я просто немного запуталась. Я не знаю, как вписать этот код в свой сценарий. - person David; 13.12.2010

Если ваш флаг на складе и количество находятся на одном листе, вы можете получить весь контент в одном массиве (используется .getDataRange (), чтобы просто захватить все), тогда, когда вы найдете свой контент на складе, вы можете просто захватить следующий индекс в этой строке.

var partNumbers = sheet.getDataRange().getValues(); 

for(num in partNumbers){
  if(partNumbers[num][4] == 'stock'){ //
    // Assuming quantity is in column F
    purchaseOrders[partNumber] = partNumbers[num][5];
  }
}
person Cyrus Loree    schedule 19.10.2013