質問編集履歴

3

表現の微修正。

2018/04/02 04:11

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
 
82
82
 
83
- その年の1月1日を基準にすると、その年の初めの月曜日を取得してしまうことがわかったので、
83
+ 対象年の1月1日を基準にすると、その年の初めの月曜日を取得してしまうことがわかったので、
84
84
 
85
85
  対象年の前の年の12月31日を基準にしてみたところ、期待通りの結果を得ることができました!
86
86
 

2

解決後のまとめを追記した。

2018/04/02 04:11

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,63 @@
65
65
  と表示されます。
66
66
 
67
67
  ゴールまであともう少しのような気がするのですが…。
68
+
69
+
70
+
71
+
72
+
73
+ #**~解決後のまとめ~**
74
+
75
+ kei344さんの回答を参考に解決しましたので、まとめておきます!
76
+
77
+
78
+
79
+ ---
80
+
81
+
82
+
83
+ その年の1月1日を基準にすると、その年の初めの月曜日を取得してしまうことがわかったので、
84
+
85
+ 対象年の前の年の12月31日を基準にしてみたところ、期待通りの結果を得ることができました!
86
+
87
+ 2018年のように、1月1日が月曜日の場合だとどうなるか心配でしたが、
88
+
89
+ 試したところ、自動的に年もチェンジされるみたいです。
90
+
91
+ 下記のようなスクリプトが完成しました。
92
+
93
+
94
+
95
+ ```javaScript
96
+
97
+ function seireki() {
98
+
99
+ // 変更のあったシート
100
+
101
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
102
+
103
+ var sh = ss.getActiveSheet();
104
+
105
+
106
+
107
+ var val = sh.getRange(1,1).getValue();
108
+
109
+ var top = sh.getRange(1,2);
110
+
111
+ var date = new Date(val-1,11,31);
112
+
113
+ Logger.log(date);
114
+
115
+ var val2 = date.getDay()-1;
116
+
117
+ Logger.log(val2);
118
+
119
+ var date2 = new Date(date.getFullYear(),date.getMonth(),date.getDate()-val2);
120
+
121
+ Logger.log(date2);
122
+
123
+ top.setValue(date2);
124
+
125
+ }
126
+
127
+ ```

1

GASを書いてみたけどエラーが出るので追記。

2018/04/02 04:03

投稿

koromo_t
koromo_t

スコア60

test CHANGED
File without changes
test CHANGED
@@ -19,3 +19,49 @@
19
19
  もしよかったら、アイデアをいただけると嬉しいです。
20
20
 
21
21
  よろしくお願いします。
22
+
23
+
24
+
25
+
26
+
27
+ ### 追記
28
+
29
+ GASを書いてみましたがエラーが出ます。。
30
+
31
+
32
+
33
+ ```javaScript
34
+
35
+ function seireki() {
36
+
37
+ // 変更のあったシート
38
+
39
+ var ss = SpreadsheetApp.getActiveSpreadsheet();
40
+
41
+ var sh = ss.getActiveSheet();
42
+
43
+
44
+
45
+ var val = sh.getRange(1,1).getValue();
46
+
47
+ var top = sh.getRange(1,2);
48
+
49
+ var date = new Date(val,0,1);
50
+
51
+ var val2 = date.getDay()-1;
52
+
53
+ top.setDate(date.getDate()-val2);
54
+
55
+ }
56
+
57
+ ```
58
+
59
+
60
+
61
+ 実行トランスクリプトには、
62
+
63
+ 「実行に失敗: TypeError: オブジェクト Range で関数 setDate が見つかりません。」
64
+
65
+ と表示されます。
66
+
67
+ ゴールまであともう少しのような気がするのですが…。