質問編集履歴

3

GAS スプレッドシート

2016/08/10 14:09

投稿

TS8332
TS8332

スコア13

test CHANGED
File without changes
test CHANGED
@@ -277,3 +277,103 @@
277
277
  }
278
278
 
279
279
  ```
280
+
281
+
282
+
283
+ sgr-2様のアドバイス後下記の通り修正を行い、
284
+
285
+ 添付のあるメールを送る事までは出来ましたが、
286
+
287
+ 添付されたExcelには、データはなく開く事もできませんでした。
288
+
289
+ もしかしたらでもなく、まだ余計なコードを書いてしまっているのかもしれません。
290
+
291
+
292
+
293
+ ```
294
+
295
+ function sendMail_Excel() {
296
+
297
+ // フォルダ、ファイル関係
298
+
299
+ var targetFileId = ["スプレッドシートのファイルID"];
300
+
301
+ var targetFolder;
302
+
303
+ var folderName;
304
+
305
+ var objFiles;
306
+
307
+ var objFile;
308
+
309
+ var fileName;
310
+
311
+ var key;
312
+
313
+
314
+
315
+ // メール関係
316
+
317
+ var mailto = "自分のアドレス@gmail.com";
318
+
319
+ var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
320
+
321
+ var body = "";
322
+
323
+
324
+
325
+ // その他
326
+
327
+ var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
328
+
329
+ var fetchUrl;
330
+
331
+ var fetchOpt = {
332
+
333
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
334
+
335
+ "muteHttpExceptions" : true
336
+
337
+ };
338
+
339
+
340
+
341
+ var xlsxName;
342
+
343
+ var attachmentFiles = new Array();
344
+
345
+
346
+
347
+ // 添付するファイルの名前を指定
348
+
349
+ xlsxName = "付けたい名前.xlsx";
350
+
351
+
352
+
353
+ try
354
+
355
+ {
356
+
357
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&exportFormat=xlsx";
358
+
359
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
360
+
361
+ }
362
+
363
+ catch(e){
364
+
365
+ subject = "ERROR:" + subject;
366
+
367
+ body = "エラー : " + e.message;
368
+
369
+ }
370
+
371
+
372
+
373
+ // メール送信
374
+
375
+ MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
376
+
377
+ }
378
+
379
+ ```

2

コードブロックを追加しました。これで大丈夫でしょうか?

2016/08/10 14:09

投稿

TS8332
TS8332

スコア13

test CHANGED
File without changes
test CHANGED
@@ -28,6 +28,8 @@
28
28
 
29
29
 
30
30
 
31
+ ```GoogleAppscript
32
+
31
33
  function sendMail_Excel2() {
32
34
 
33
35
  // フォルダ、ファイル関係
@@ -144,6 +146,10 @@
144
146
 
145
147
 
146
148
 
149
+ ```
150
+
151
+
152
+
147
153
  【うまく動作しないコード】
148
154
 
149
155
  上記参考コードの内、ファイルIDとメールアドレスさえ修正しておけば、
@@ -154,6 +160,8 @@
154
160
 
155
161
 
156
162
 
163
+ ```GoogleAppscript
164
+
157
165
  function sendMail_Excel2() {
158
166
 
159
167
  // フォルダ、ファイル関係
@@ -267,3 +275,5 @@
267
275
  MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
268
276
 
269
277
  }
278
+
279
+ ```

1

参考にしたコードと実装してもうまくいかないコードを追加しました。

2016/08/08 15:56

投稿

TS8332
TS8332

スコア13

test CHANGED
File without changes
test CHANGED
@@ -21,3 +21,249 @@
21
21
  何か良い方法がありましたらご教示いただければ幸いです。
22
22
 
23
23
  宜しくお願いいたします。
24
+
25
+
26
+
27
+ 【参考コード】
28
+
29
+
30
+
31
+ function sendMail_Excel2() {
32
+
33
+ // フォルダ、ファイル関係
34
+
35
+ var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
36
+
37
+ var targetFolder;
38
+
39
+ var folderName;
40
+
41
+ var objFiles;
42
+
43
+ var objFile;
44
+
45
+ var fileName;
46
+
47
+ var key;
48
+
49
+
50
+
51
+ // メール関係
52
+
53
+ var mailto = "@gmail.com";
54
+
55
+ var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
56
+
57
+ var body = "";
58
+
59
+
60
+
61
+ // その他
62
+
63
+ var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
64
+
65
+ var fetchUrl;
66
+
67
+ var fetchOpt = {
68
+
69
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
70
+
71
+ "muteHttpExceptions" : true
72
+
73
+ };
74
+
75
+
76
+
77
+ var xlsxName;
78
+
79
+ var attachmentFiles = new Array();
80
+
81
+
82
+
83
+ try
84
+
85
+ {
86
+
87
+ for (var i = 0; i < targetFolderIds.length; i++) {
88
+
89
+ // Idから対象フォルダを取得
90
+
91
+ targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
92
+
93
+ folderName = targetFolder.getName();
94
+
95
+ body = body + folderName + "\n";
96
+
97
+
98
+
99
+ // 対象フォルダ以下のSpreadsheetを取得
100
+
101
+ objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
102
+
103
+
104
+
105
+ while (objFiles.hasNext()) {
106
+
107
+ objFile = objFiles.next();
108
+
109
+ key = objFile.getId();
110
+
111
+ fileName = objFile.getName();
112
+
113
+ body = body + " - " + fileName + "\n";
114
+
115
+
116
+
117
+ xlsxName = fileName + "_" + nowDate + ".xlsx";
118
+
119
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
120
+
121
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
122
+
123
+ }
124
+
125
+ }
126
+
127
+ }
128
+
129
+ catch(e){
130
+
131
+ subject = "ERROR:" + subject;
132
+
133
+ body = "エラー : " + e.message;
134
+
135
+ }
136
+
137
+
138
+
139
+ // メール送信
140
+
141
+ MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
142
+
143
+ }
144
+
145
+
146
+
147
+ 【うまく動作しないコード】
148
+
149
+ 上記参考コードの内、ファイルIDとメールアドレスさえ修正しておけば、
150
+
151
+ スプレッドシートがExcel形式に変換されて、添付メールとなって送る事が出来ると思ったのですが・・・・・。
152
+
153
+ すみません。GASに触れる事が今回初めてなもので。
154
+
155
+
156
+
157
+ function sendMail_Excel2() {
158
+
159
+ // フォルダ、ファイル関係
160
+
161
+ var targetFolderIds = [”対象のスプレッドシートのファイルIDを入力"];
162
+
163
+ var targetFolder;
164
+
165
+ var folderName;
166
+
167
+ var objFiles;
168
+
169
+ var objFile;
170
+
171
+ var fileName;
172
+
173
+ var key;
174
+
175
+
176
+
177
+ // メール関係
178
+
179
+ var mailto = "自分のメールアドレスを入力@gmail.com";
180
+
181
+ var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
182
+
183
+ var body = "";
184
+
185
+
186
+
187
+ // その他
188
+
189
+ var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
190
+
191
+ var fetchUrl;
192
+
193
+ var fetchOpt = {
194
+
195
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
196
+
197
+ "muteHttpExceptions" : true
198
+
199
+ };
200
+
201
+
202
+
203
+ var xlsxName;
204
+
205
+ var attachmentFiles = new Array();
206
+
207
+
208
+
209
+ try
210
+
211
+ {
212
+
213
+ for (var i = 0; i < targetFolderIds.length; i++) {
214
+
215
+ // Idから対象フォルダを取得
216
+
217
+ targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
218
+
219
+ folderName = targetFolder.getName();
220
+
221
+ body = body + folderName + "\n";
222
+
223
+
224
+
225
+ // 対象フォルダ以下のSpreadsheetを取得
226
+
227
+ objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
228
+
229
+
230
+
231
+ while (objFiles.hasNext()) {
232
+
233
+ objFile = objFiles.next();
234
+
235
+ key = objFile.getId();
236
+
237
+ fileName = objFile.getName();
238
+
239
+ body = body + " - " + fileName + "\n";
240
+
241
+
242
+
243
+ xlsxName = fileName + "_" + nowDate + ".xlsx";
244
+
245
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
246
+
247
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
248
+
249
+ }
250
+
251
+ }
252
+
253
+ }
254
+
255
+ catch(e){
256
+
257
+ subject = "ERROR:" + subject;
258
+
259
+ body = "エラー : " + e.message;
260
+
261
+ }
262
+
263
+
264
+
265
+ // メール送信
266
+
267
+ MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
268
+
269
+ }