回答編集履歴

6

 

2022/08/25 09:57

投稿

退会済みユーザー
test CHANGED
@@ -15,7 +15,7 @@
15
15
  メニュー→表示形式→数字→カスタム数値数式
16
16
  「@」と入力して「適用」ボタンをクリック
17
17
  <GASでのやり方>
18
- GASコード内入力すの行
18
+ GASコード内setValueを行ってい部分の前に
19
19
  sheet.getRange(行,列).setNumberFormat("@");
20
20
  の行を追加する。
21
21
 

5

 

2022/08/24 03:13

投稿

退会済みユーザー
test CHANGED
@@ -1,20 +1,33 @@
1
1
  Slackが返すタイムスタンプを数値として表示させるときに、GASで扱える浮動小数点数の範囲で扱おうとして
2
2
  小数第6位が丸められている可能性があります。
3
3
 
4
+ さらに、setValues() の引数に数値型の変数を指定して実行した場合、
5
+ 入力先のセルに設定されている表示形式が強制的に数値形式に上書きされてしまうようです。
4
- 対象セル表示形式を値でなく**書式なしテキスト**に変えてみてはいかがでしょうか
6
+ したがって、setValues() 数は、文字列型に変換した変数を指定する必要あるよう
5
7
 
8
+ (質問文の追記では、「event.param,tsをtypeof で調べたところ 文字列型だった」 とのことなので、なぜ丸められてしまうのかは不明ですが)
6
9
 
10
+ ---
11
+
12
+ ① まず、対象セルの表示形式を数値ではなく、**書式なしテキスト**に変える
13
+ <手動でのやり方>
7
14
  小数第6位まで表示させたいセルをクリック
8
15
  メニュー→表示形式→数字→カスタム数値数式
9
16
  「@」と入力して「適用」ボタンをクリック
17
+ <GASでのやり方>
18
+ GASコード内に、入力する直前の行に
19
+ sheet.getRange(行,列).setNumberFormat("@");
20
+ の行を追加する。
10
21
 
11
- GASコード内に、
12
- sheet.getRange(行,列).setNumberFormat("@");
13
- の行を追加し、
14
- そのあとの入力部分
22
+ ②次に、そのあとの入力部分について
15
23
  sheet.getRange(66,30).setValue(params.event.ts.toString());
24
+ のように、末尾にtoString() を付ける。
16
25
 
17
- のように、末尾にtoString() を付ける
26
+ (またはこれでも治らなければ、末尾に空白文字を付けてみ
27
+ sheet.getRange(66,30).setValue(params.event.ts.toString() +" ”);
28
+
29
+
30
+ 例)
18
31
  ```js
19
32
  function main(params){
20
33
 

4

 

2022/08/24 03:00

投稿

退会済みユーザー
test CHANGED
@@ -10,7 +10,8 @@
10
10
 
11
11
  GASコード内に、
12
12
  sheet.getRange(行,列).setNumberFormat("@");
13
- の行を追加し、入力部分は
13
+ の行を追加し、
14
+ そのあとの入力部分は
14
15
  sheet.getRange(66,30).setValue(params.event.ts.toString());
15
16
 
16
17
  のように、末尾にtoString() を付ける。

3

 

2022/08/24 02:59

投稿

退会済みユーザー
test CHANGED
@@ -3,16 +3,17 @@
3
3
 
4
4
  対象セルの表示形式を数値ではなく、**書式なしテキスト**に変えてみてはいかがでしょうか。
5
5
 
6
- ① Googleスプレッドシートのメニューから設定する方法
6
+
7
7
  小数第6位まで表示させたいセルをクリック
8
8
  メニュー→表示形式→数字→カスタム数値数式
9
9
  「@」と入力して「適用」ボタンをクリック
10
10
 
11
- または
12
- ② GASで設定する方法
13
11
  GASコード内に、
14
12
  sheet.getRange(行,列).setNumberFormat("@");
15
- の行を追加する。
13
+ の行を追加し、入力部分は
14
+ sheet.getRange(66,30).setValue(params.event.ts.toString());
15
+
16
+ のように、末尾にtoString() を付ける。
16
17
  ```js
17
18
  function main(params){
18
19
 

2

修正

2022/08/24 02:58

投稿

退会済みユーザー
test CHANGED
@@ -23,7 +23,7 @@
23
23
  sheet.getRange(66,30).setNumberFormat("@");
24
24
 
25
25
  //parseしたデータからevent.tsを指定
26
- sheet.getRange(66,30).setValue(params.event.ts);
26
+ sheet.getRange(66,30).setValue(params.event.ts.toString());
27
27
  以下省略
28
28
  }
29
29
  ```

1

修正

2022/08/24 01:35

投稿

退会済みユーザー
test CHANGED
@@ -1,22 +1,26 @@
1
+ Slackが返すタイムスタンプを数値として表示させるときに、GASで扱える浮動小数点数の範囲で扱おうとして
2
+ 小数第6位が丸められている可能性があります。
3
+
1
- 小数第6位まで表示するように、対象セルの表示形式を変えてみてはいかがでしょうか。
4
+ 対象セルの表示形式を数値ではなく、**書式なしテキスト**に変えてみてはいかがでしょうか。
5
+
2
6
  ① Googleスプレッドシートのメニューから設定する方法
3
7
  小数第6位まで表示させたいセルをクリック
4
8
  メニュー→表示形式→数字→カスタム数値数式
5
- 0.000000」と入力して「適用」ボタンをクリック
9
+ @」と入力して「適用」ボタンをクリック
6
10
 
7
11
  または
8
12
  ② GASで設定する方法
9
13
  GASコード内に、
10
- sheet.getRange(行,列).setNumberFormat("0,000000");
14
+ sheet.getRange(行,列).setNumberFormat("@");
11
- の行を追加する。(対象セルの数値形式を小数第6位まで表示させる設定)
15
+ の行を追加する。
12
16
  ```js
13
17
  function main(params){
14
18
 
15
19
  var spreadsheet = SpreadsheetApp.openById('XXXXXXXXXXXXXXXX');
16
20
  var sheet = spreadsheet.getSheetByName('XXXX');
17
21
 
18
- //表示形を小数第6位まで表示するように設定
22
+ //なしテキストに設定
19
- sheet.getRange(66,30).setNumberFormat("0,000000");
23
+ sheet.getRange(66,30).setNumberFormat("@");
20
24
 
21
25
  //parseしたデータからevent.tsを指定
22
26
  sheet.getRange(66,30).setValue(params.event.ts);