teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

switch文の使い方について追記

2020/02/14 03:02

投稿

dodox86
dodox86

スコア9416

answer CHANGED
@@ -1,4 +1,29 @@
1
1
  `setValue()`で値を更新した結果が、リアルタイムにシートに反映されていないからだと思われます。
2
2
  `SpreadsheetApp.flush();`を`myFunction`関数の最後に実行してみてください。
3
3
 
4
- [SpreadsheetApp#flush() - Google Apps Script](https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush())
4
+ [SpreadsheetApp#flush() - Google Apps Script](https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#flush())
5
+
6
+ ---
7
+ **追記しました:**
8
+
9
+ `SpreadsheetApp#flush()`ではダメだったということで、関数外で`var ss = SpreadsheetApp.openById('シートID');...`のように宣言していることからの変数のライフサイクルの問題もあるかもしれませんが、そもそものコードで、`switch`文のタプル(?)指定の使い方にも問題があるようです。
10
+
11
+ 以下のコードでは` [20-02-14 11:51:30:539 JST] 0, 1`とのようにログ出力されるので、文法エラー自体は無いもののプログラマーの意図を反映していない、不正なコードだと考えられます。(Google Apps Scriptで最近使えるようになったJavaScript V8エンジンでも一応確認しましたが、同じ結果です)
12
+ ```GAS
13
+ function test29() {
14
+ var value1 = 1;
15
+ var value2 = 1;
16
+ switch (value1, value2) {
17
+ case 0, 1:
18
+ Logger.log("0, 1");
19
+ break;
20
+ case 1, 1:
21
+ Logger.log("1, 1");
22
+ break;
23
+ default:
24
+ Logger.log("default");
25
+ break;
26
+ }
27
+ }
28
+ ```
29
+ コメントでも書きましたが、一見正しく動いているように見えるテストパターンで試されたのだと思います。再度確認してみてください。