0

GoogleDocsSpreadsheetの簡単なスクリプトを作成しようとしています。以下の2つのリンクは、スクリプトを作成しているシートのスクリーンショットです。

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

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

シート発注書で、列e == "stock"の場合、部品番号を見つけてシート"Inventory"の数量を調整するために必要です。ベローは私がやろうとしていることの始まりです。誰か私に手を貸してもらえますか?

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
  }
}

助けてくれてありがとう。

4

2 に答える 2

0

javascriptはforeachを備えていません-メカニズムを自分で実装することを含め、これを回避するための可能な方法があります。

それが1回限りの修正であり、すぐに他の言語に移行する場合は、次のことをお勧めします。

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

行と列を反復処理するのに似たもの...

独自のforeachを実装したい場合は、このサイトをご覧ください。

Javascriptの取り組みを拡大する予定がある場合は、リンクテキストを検討してください。

それ以外の場合は、Javaでアップルレットを作成し、スクリプトの代わりにそれらを実装することを検討してください。

于 2010-12-13T15:24:39.467 に答える
0

在庫のフラグと数量が同じシートにある場合は、コンテンツ全体を同じ配列で取得でき(.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];
  }
}
于 2013-10-19T14:53:06.440 に答える