[英]How to iterate through a list of ranges in Google Apps Script
我有Google表格,其中包含許多需要組織的名稱和小時。 我嘗試使用內置函數,但此工作表是其他工作表上其他輸入的結果(因此行的長度是可變的)
Sheet 1
A B C D E T U
Project| Name1 | Hours1 | Name2 | Hours2 | ... | ... | Name10 | Hours10|
————————————————————————————————————————————————————————————————————————
P1 | Larry | 10 | Bob | 20 | ... | ... | Tim | 10 |
P2 | Bob | 15 | Tim | 15 | ... | ... | Larry | 15 |
.... | ... | ... | ... | ... | ... | ... | ... | ... |
Pnth | Tim | 20 | Larry | 10 | ... | ... | Bob | 10 |
到目前為止,我已經嘗試遍歷整個工作表並使用了要從中排序的名稱列表,但我需要它來采用可變長度的行。
function organize(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rangeList = sheet.getRangeList(['B1:C','D1:E','F1:G','H1:I','J1:K','L1:M','N1:O','P1:Q','R1:S','T1:U']);
我希望它看起來像(在另一張紙上):名單和總小時數
Sheet 2
Name | Total hours | Number Projects Assigned|
——————————————————————————————————————————————
Larry| TOTAL NUMBER | 4 (P1,P2,Pnth) |
Tim | TOTAL NUMBER | 4 (P1,P2,Pnth) |
Bob | TOTAL NUMBER | 4 (P1,P2,Pnth) |
function organize(values) {
var out = {};//out object
values.forEach(function(row) {
for (var col = 1, l = row.length; col < l; col += 2) {
var name = row[col];
out[name] = out[name] || [0, 0]; //[hours,projects]
out[name][0] += row[col + 1]; //hours sum
out[name][1]++; //projects sum
}
});
return Object.keys(out).map(function(name) {
return [name, out[name][0], out[name][1]]; //[name, hours and projects]
});
}
如果用作自定義函數,
=organize(A2:U4)
返回名稱,小時和項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.