質問編集履歴

2

9/10 追記内容 の項目を追加致しました

2021/09/10 10:41

投稿

oimokorori
oimokorori

スコア1

test CHANGED
File without changes
test CHANGED
@@ -22,7 +22,193 @@
22
22
 
23
23
  ```ここに言語名を入力
24
24
 
25
+ function rennbann() {//管理番号付与
26
+
27
+ var mySheet2 = SpreadsheetApp.getActiveSheet(); //シートを取得
28
+
29
+
30
+
31
+ var range = mySheet2.getRange(mySheet2.getLastRow(),1);
32
+
33
+ if(range.isBlank() == true){
34
+
35
+ range.setValue("=ROW()-1");
36
+
37
+ }
38
+
39
+ }
40
+
41
+
42
+
43
+ function mMail() { //依頼メールを承認者へ送付
44
+
45
+ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
46
+
47
+ var myCell = mySheet.getActiveCell();
48
+
49
+ var row = myCell.getRow();
50
+
51
+
52
+
53
+ var email = mySheet.getRange(row, 3).getValue();
54
+
55
+ var tennpu =mySheet.getRange(row, 7).getValue();
56
+
57
+ var kannri =mySheet.getRange(row, 1).getValue();
58
+
59
+ var name = mySheet.getRange(row, 4).getValue();
60
+
61
+ var bumon = mySheet.getRange(row, 5).getValue();
62
+
63
+ var kinngaku =mySheet.getRange(row, 6).getValue();
64
+
65
+
66
+
67
+ var subject = '【交通費精算依頼】管理No.' + kannri + ")";
68
+
69
+ var body = "標記の件で、以下ご承認の程宜しくお願い致します\n\n" + "依頼者:" + name + "\n部門:" + bumon + "\n金額:" + kinngaku + "\n\n以上、宜しくお願い致します\n" + tennpu;
70
+
71
+
72
+
73
+ MailApp.sendEmail({to:email, subject:subject,body:body});
74
+
75
+ }
76
+
77
+
78
+
25
- JavaScript gas
79
+ function kaisi(){
80
+
81
+ rennbann();
82
+
83
+ mMail();
84
+
85
+
86
+
87
+ }
88
+
89
+ --------------------------------------------------------------
90
+
91
+ function showCheckboxInfo() { //承認者がチャックボックスを押下を確認
92
+
93
+ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
94
+
95
+ var myCell = mySheet.getActiveCell();
96
+
97
+ var rule = myCell.getDataValidation();
98
+
99
+ if (rule != null) {
100
+
101
+ var criteria = rule.getCriteriaType();
102
+
103
+ var status = myCell.getValue()
104
+
105
+ if ( criteria == 'CHECKBOX' && status == true) {
106
+
107
+ var row = myCell.getRow();
108
+
109
+ var result = Browser.msgBox('チェックボックスが押されました。メールを送信しますか?', Browser.Buttons.OK_CANCEL);
110
+
111
+ if(result == 'ok'){
112
+
113
+ sendMail(row);
114
+
115
+ } else if (result == 'cancel'){
116
+
117
+ mySheet.getRange(row,2).uncheck(); // チェックを外す
118
+
119
+ }
120
+
121
+ }
122
+
123
+ }
124
+
125
+ }
126
+
127
+
128
+
129
+ function sendMail(row) { //承認者がチェックボックスを押すとメール送信
130
+
131
+ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
132
+
133
+ var myCell = mySheet.getActiveCell();
134
+
135
+ var row = myCell.getRow();
136
+
137
+
138
+
139
+ var email = mySheet.getRange(row, 8).getValue();
140
+
141
+ var tennpu =mySheet.getRange(row, 7).getValue();
142
+
143
+ var kannri =mySheet.getRange(row, 1).getValue();
144
+
145
+
146
+
147
+ var subject = '【交通費精算依頼】管理No.' + kannri + ")";
148
+
149
+ var body = "標記の件で、承認致します\n" + tennpu;
150
+
151
+
152
+
153
+ MailApp.sendEmail({to:email, subject:subject,body:body});
154
+
155
+ }
156
+
157
+ --------------------------------------------------------------
158
+
159
+ function addCheckboxes() { //チェックボックスを追加
160
+
161
+ targetRange().insertCheckboxes();
162
+
163
+ }
164
+
165
+
166
+
167
+ function checked() {
168
+
169
+ targetRange().check();
170
+
171
+ }
172
+
173
+
174
+
175
+ function unchecked() {
176
+
177
+ targetRange().uncheck();
178
+
179
+ }
180
+
181
+
182
+
183
+ function remove() {
184
+
185
+ targetRange().removeCheckboxes();
186
+
187
+ }
188
+
189
+
190
+
191
+ function judge() {
192
+
193
+ var result = targetRange().isChecked();
194
+
195
+ Logger.log(result);
196
+
197
+ }
198
+
199
+
200
+
201
+ function targetRange() {
202
+
203
+ var sheet = SpreadsheetApp.getActiveSheet();
204
+
205
+ var lastRow = sheet.getLastRow();
206
+
207
+ var range = sheet.getRange('B2:B' + lastRow);
208
+
209
+ return range;
210
+
211
+ }
26
212
 
27
213
  ```
28
214
 
@@ -37,3 +223,59 @@
37
223
 
38
224
 
39
225
  初投稿につき、至らない点などありましたら申し訳ございません。
226
+
227
+
228
+
229
+ ### 9/10 追記内容
230
+
231
+ ご指摘を踏まえ、やりたいことをもう少し詳細に記載します。
232
+
233
+ それに伴いコードも作成し、追記致しました。
234
+
235
+
236
+
237
+ ・申請内容は、1つ(「交通費精算の承認」)
238
+
239
+ ・承認者は1人(申請者がエクセル内にて指定)
240
+
241
+
242
+
243
+ 1.あらかじめフォーマットを決めた、交通費申請用のエクセル(E)を用意する。 
244
+
245
+ (例:B1セル;申請者のメールアドレス、B2:申請者部門名、B3:申請者名、B4セル:承認依頼先メールアドレス、B5セル:金額)
246
+
247
+  
248
+
249
+ 2.申請者は、Eに申請する内容を書き込み、Googleフォーム(F)からアップロードする。
250
+
251
+  
252
+
253
+ 3.回答を集計しているGoogleスプレッドシート(S)のFのコンテナバインドスクリプトは下記のような内容とする。(トリガー:フォームの送信時)
254
+
255
+
256
+
257
+ 回答(アップロード)されたEに対応するGoogleドライブURLを読み取り、
258
+
259
+ DriveAppサービスを使ってEをGoogleスプレッドシートに変換し、
260
+
261
+ 申請者のメールアドレス、申請者部門名、申請者名、承認依頼先メールアドレス、金額を取得し、(S)のEのリンクのある行に書き込む。
262
+
263
+ ※別シートの末尾行に書き込むでも大丈夫です
264
+
265
+ ・Sの1列目には管理NOとして連番1~を記載。2列目は承認用のチェックボックスを設置、残りの列は申請者のメールアドレス、申請者部門名、申請者名、承認依頼先メールアドレス、金額を記録する。
266
+
267
+  
268
+
269
+ 4.承認者は、Googleフォーム送信時にメールを自動受信、後にSを適当なタイミングで確認し、下記の作業を行う。
270
+
271
+
272
+
273
+ B列のチェックボックスのうち「未チェック」となっている行について、内容を確認する。
274
+
275
+ ・内容が妥当であればチェック入れる。
276
+
277
+ ・申請者へ承認完了の申請者のメールアドレス宛にメールが送信される。
278
+
279
+
280
+
281
+ 上記のうち、3の箇所をどのようにすればいいかわからず、どうかお力を頂けないでしょうか。

1

タグを追加致しました。

2021/09/10 10:40

投稿

oimokorori
oimokorori

スコア1

test CHANGED
File without changes
test CHANGED
File without changes