-
Notifications
You must be signed in to change notification settings - Fork 0
/
repositoryWrite.gs
57 lines (51 loc) · 2.19 KB
/
repositoryWrite.gs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
function renameTask(task) {
// priorityとaspを文字列に変換
const priority = task.priority;
const aspString = String(task.asp);
// 新しい名前のフォーマット: "#[Priority][ASP]:[Name]"
return `#${priority}${aspString}:${task.name}`;
}
function backlogHashFilter(attr, value, tasks) {
// 指定された属性が連想配列の要素のキーに含まれているかチェック
if (tasks.length > 0 && !(attr in tasks[0])) {
throw new Error("指定された属性は連想配列に存在しません: " + attr);
}
// フィルタリング処理
return tasks.filter(task => task[attr] === value);
}
function serializeBacklogBufToHash(buf) {
let tasks = []; // タスクを格納する配列
let emptyTaskIds = []; // 空白のタスクIDを格納する配列
const s = 1; // ステータスの列インデックス
const t = 2; // 時間割の列のインデックス
const p = 3; // 優先度の列インデックス
const n = 4; // タスク名の列インデックス
const a = 8; // ASPの列インデックス
const c = 9; // 所要時間の列インデックス
const d = 10; // 完了の列のインデックス
let doneValue;
// bufの各行をループして連想配列に変換
for (let i = 0; i < buf.length; i++) {
let row = buf[i];
let aspValue = row[a];
doneValue = row[d] ? "TRUE" : "FALSE";
let task = {
"id": i + 1, // backlogにおいて上から何個目のタスクなのか
"stanby": row[s] || false,
"timeBlock": row[t],
"priority": row[p], // 優先度
"name": String(row[n]), // タスク名
"asp": aspValue || 0, // ASPが空なら0、そうでなければその値
"consuming": row[c], // ASPが空なら0、そうでなければその値
"done": doneValue
};
if (task.name !== "") {
tasks.push(task);
} else {
emptyTaskIds.push(task.id); // タスク名が空の場合はIDをemptyTaskIdsに追加
}
}
Logger.log("serializeBacklogBufToHash");
Logger.log({tasks: tasks, emptyarea: emptyTaskIds});
return {hash: tasks, emptyTaskIds}; // 結果としてオブジェクトを返す
}