0

これは少し基本的で答えやすいかもしれませんが、私はしばらくの間髪を引っ張っています!

次のコードを作成しました。これは、物事を機能させる正しい方法が見つからないため、半疑似です!

var s = "Test";

function onEdit(event)
{
  var ss = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  if (ss.getName() == s)
  {
    results = {"Currently On": 0, "Next Up": 0, "On Hold": 0, "Waiting on someone else":     0, "zDone": 0};
    last = ss.getMaxRows();
    start = ss.getRange("F3:"+last).getValues();
    var output = "J11";
    for (x=0;x<start.length;x++)
    {
     results[start[x]]++;
    }

    for (y=0;y<results.length;y++)
    {
      row = ss.getRow(output);
      row.value = results[y];
      output++;
    }
  }
}

この画像のデータの例がありますデータ例

基本的な考え方は、各タスクのすべての可能なカテゴリを実行し、それぞれの数の横に数値リストを保持することです. 私はそれを動的にしたいとも思っています (そのため、カテゴリのリストにハードコードする必要はありません)。

Google Apps デバッガは非常にイライラします。

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

4

3 に答える 3

1

まず、この特定のユース ケースは、スプレッドシートの式を使用して簡単に達成できます。

=QUERY(A2:F;"select F, count(A) where F != '' group by F label count(A) 'Count'";1)

しかし、GAS でこれを実行したい理由があるかもしれません。

第二に、これはいくつかの構文の問題があるかもしれないと私が思うところです:

last = ss.getMaxRows();

ここだけ使いvar last = ss.getLastRow()ます。

start = ss.getRange("F3:"+last).getValues();

範囲参照は、GSheets で有効な参照である "F3:100" のようなものに評価されます (GAS がそれを処理できるかどうかはわかりません) が、それでも "F3:F100" のようなものが本当に必要なので、私は使用してvar start = ss.getRange("F3:F"+last).getValues();ください。

results[start[x]]++;

呼び出しから配列を作成する場合、getValues()それは 2D 配列であるため、 を使用する必要がありますresults[start[x][0]]++;

次のループとoutput変数で、私はあなたがそこで何をしているのか少し迷っていることを認めなければなりません. 結果テーブルをどのようにレイアウトしたかったですか?

于 2012-08-01T04:32:58.107 に答える
1

あなたが持っている

output = "J11";

そして、あなたはそうします

ss.getRow(output);
output++;

これは無効です。まず、ss は getRow メソッドがない Sheet です。だから、あなたが本当にやるべきことは、このようなものです

var row = 11 ;
var col = 10 ;  //Col J
for (y=0;y<results.length;y++)
{
  ss.getRange(row,col,1,1).setValue(results[y]);
  row++:
}
于 2012-08-01T05:58:57.847 に答える
0

AdamL のように、これはスプレッドシートのネイティブ機能内でより適切に処理することをお勧めします。動的に更新されるピボット テーブルが必要なようです。または、 =countif(F:F,"Currently On" ) のような数式を使用すると、すぐに要求を満たすことができます。=Unique(F:F) は、配列内のカテゴリのリストを提供します

于 2012-08-02T05:58:26.357 に答える