回答編集履歴
2
コメントでの質問の回答を追記
answer
CHANGED
@@ -27,4 +27,32 @@
|
|
27
27
|
}
|
28
28
|
```
|
29
29
|
|
30
|
-
ただ実際の実装では上のサンプルの様に行ごとに`getRange()`して`getValue()`するんじゃなくて、必要な範囲をまとめて`getRange()`してから`getValues()`して得た配列を使ってループした方がいいです。その方が速いので。
|
30
|
+
ただ実際の実装では上のサンプルの様に行ごとに`getRange()`して`getValue()`するんじゃなくて、必要な範囲をまとめて`getRange()`してから`getValues()`して得た配列を使ってループした方がいいです。その方が速いので。
|
31
|
+
|
32
|
+
---
|
33
|
+
(追記)
|
34
|
+
> あと、ここでかいたcom_on,offを探し、onだった場合こうするとやる場合
|
35
|
+
|
36
|
+
トグルするとしたらこんな感じでしょうか。
|
37
|
+
```JavaScript
|
38
|
+
function myFunction() {
|
39
|
+
const userId = "xyz";
|
40
|
+
|
41
|
+
const sheet = SpreadsheetApp.getActiveSheet();
|
42
|
+
const lastRow = sheet.getLastRow();
|
43
|
+
const data = sheet.getRange(1, 1, lastRow, 2).getValues();
|
44
|
+
|
45
|
+
const userRow = data.find((rowData) => rowData[0] === userId);
|
46
|
+
if (userRow) {
|
47
|
+
if (userRow[1] === "com_off") {
|
48
|
+
userRow[1] = "com_on";
|
49
|
+
} else {
|
50
|
+
userRow[1] = "com_off";
|
51
|
+
}
|
52
|
+
} else {
|
53
|
+
data.push([userId, "com_off"]);
|
54
|
+
}
|
55
|
+
|
56
|
+
sheet.getRange(1, 1, data.length, 2).setValues(data);
|
57
|
+
}
|
58
|
+
```
|
1
コードに間違いがあったので修正
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
//userIdが見つからなければ、最終行の次の行のデータを更新
|
23
23
|
const newLastRow = lastRow + 1;
|
24
24
|
sheet
|
25
|
-
.getRange(newLastRow, 1,
|
25
|
+
.getRange(newLastRow, 1, 1, 2)
|
26
26
|
.setValues([[userId, "com_off"]]);
|
27
27
|
}
|
28
28
|
```
|