回答編集履歴

3

追記情報について修正を行いました。

2015/09/26 11:49

投稿

sgr-2
sgr-2

スコア294

test CHANGED
@@ -170,12 +170,14 @@
170
170
 
171
171
 
172
172
 
173
+ **編集 2015/09/26 20:48頃**
174
+
175
+
176
+
173
177
  Spreadsheet単位(Excelで言うワークブック単位)でxlsxファイルを作成し、メール添付出来るようにしたコードを追記させてもらいます。
174
178
 
175
179
  ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
176
180
 
177
- **※コメントの通り現在確認中の内容ありです※**
178
-
179
181
  ```Google Apps Script
180
182
 
181
183
  function sendMail_Excel2() {
@@ -194,12 +196,6 @@
194
196
 
195
197
  var fileName;
196
198
 
197
-
198
-
199
- // スプレッドシート関係
200
-
201
- var ss;
202
-
203
199
  var key;
204
200
 
205
201
 
@@ -208,7 +204,7 @@
208
204
 
209
205
  var mailto = "@gmail.com";
210
206
 
211
- var subject = "";
207
+ var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
212
208
 
213
209
  var body = "";
214
210
 
@@ -228,64 +224,72 @@
228
224
 
229
225
  };
230
226
 
227
+
228
+
231
229
  var xlsxName;
232
230
 
233
231
  var attachmentFiles = new Array();
234
232
 
235
233
 
236
234
 
235
+ try
236
+
237
+ {
238
+
237
- for (var i = 0; i < targetFolderIds.length; i++) {
239
+ for (var i = 0; i < targetFolderIds.length; i++) {
238
-
240
+
239
- // Idから対象フォルダ取得
241
+ // Idから対象フォルダ取得
240
-
242
+
241
- targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
243
+ targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
242
-
244
+
243
- folderName = targetFolder.getName();
245
+ folderName = targetFolder.getName();
244
-
246
+
245
- body = body + folderName + "\n";
247
+ body = body + folderName + "\n";
246
-
247
-
248
-
248
+
249
+
250
+
249
- // 対象フォルダ以下のSpreadsheetを取得
251
+ // 対象フォルダ以下のSpreadsheetを取得
250
-
252
+
251
- objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
253
+ objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
252
-
253
-
254
-
254
+
255
+
256
+
255
- while (objFiles.hasNext()) {
257
+ while (objFiles.hasNext()) {
256
-
258
+
257
- objFile = objFiles.next();
259
+ objFile = objFiles.next();
260
+
258
-
261
+ key = objFile.getId();
262
+
259
- fileName = objFile.getName();
263
+ fileName = objFile.getName();
260
-
264
+
261
- body = body + " - " + fileName + "\n";
265
+ body = body + " - " + fileName + "\n";
262
266
 
263
267
 
264
268
 
265
- // Spreadsheetのオープン
266
-
267
- ss = SpreadsheetApp.openByUrl(objFile.getUrl());
268
-
269
- key = ss.getId();
270
-
271
-
272
-
273
- xlsxName = fileName + "_" + nowDate + ".xlsx";
269
+ xlsxName = fileName + "_" + nowDate + ".xlsx";
274
-
270
+
275
- fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
271
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
276
-
272
+
277
- attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
273
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
274
+
275
+ }
278
276
 
279
277
  }
280
278
 
281
279
  }
282
280
 
281
+ catch(e){
282
+
283
+ subject = "ERROR:" + subject;
284
+
285
+ body = "エラー : " + e.message;
286
+
287
+ }
288
+
283
289
 
284
290
 
285
291
  // メール送信
286
292
 
287
- subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
288
-
289
293
  MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
290
294
 
291
295
  }

2

コメント部分の内容を追記しました。

2015/09/26 11:49

投稿

sgr-2
sgr-2

スコア294

test CHANGED
@@ -174,6 +174,8 @@
174
174
 
175
175
  ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
176
176
 
177
+ **※コメントの通り現在確認中の内容ありです※**
178
+
177
179
  ```Google Apps Script
178
180
 
179
181
  function sendMail_Excel2() {

1

コードの追加をしました

2015/09/24 12:20

投稿

sgr-2
sgr-2

スコア294

test CHANGED
@@ -159,3 +159,133 @@
159
159
  また、「定期的かつ自動で」もトリガー設定で実現可能と思います。
160
160
 
161
161
  ドライブへのアクセスやメール送信など、承認が必要な機能がありますので、それらは一度手動で実行して許可してしまえば問題ないと思います。(月トリガーで日と時間帯を指定)
162
+
163
+
164
+
165
+
166
+
167
+ ---
168
+
169
+ **追記 2015/09/24 18:27頃**
170
+
171
+
172
+
173
+ Spreadsheet単位(Excelで言うワークブック単位)でxlsxファイルを作成し、メール添付出来るようにしたコードを追記させてもらいます。
174
+
175
+ ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
176
+
177
+ ```Google Apps Script
178
+
179
+ function sendMail_Excel2() {
180
+
181
+ // フォルダ、ファイル関係
182
+
183
+ var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
184
+
185
+ var targetFolder;
186
+
187
+ var folderName;
188
+
189
+ var objFiles;
190
+
191
+ var objFile;
192
+
193
+ var fileName;
194
+
195
+
196
+
197
+ // スプレッドシート関係
198
+
199
+ var ss;
200
+
201
+ var key;
202
+
203
+
204
+
205
+ // メール関係
206
+
207
+ var mailto = "@gmail.com";
208
+
209
+ var subject = "";
210
+
211
+ var body = "";
212
+
213
+
214
+
215
+ // その他
216
+
217
+ var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
218
+
219
+ var fetchUrl;
220
+
221
+ var fetchOpt = {
222
+
223
+ "headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
224
+
225
+ "muteHttpExceptions" : true
226
+
227
+ };
228
+
229
+ var xlsxName;
230
+
231
+ var attachmentFiles = new Array();
232
+
233
+
234
+
235
+ for (var i = 0; i < targetFolderIds.length; i++) {
236
+
237
+ // Idから対象フォルダの取得
238
+
239
+ targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
240
+
241
+ folderName = targetFolder.getName();
242
+
243
+ body = body + folderName + "\n";
244
+
245
+
246
+
247
+ // 対象フォルダ以下のSpreadsheetを取得
248
+
249
+ objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
250
+
251
+
252
+
253
+ while (objFiles.hasNext()) {
254
+
255
+ objFile = objFiles.next();
256
+
257
+ fileName = objFile.getName();
258
+
259
+ body = body + " - " + fileName + "\n";
260
+
261
+
262
+
263
+ // Spreadsheetのオープン
264
+
265
+ ss = SpreadsheetApp.openByUrl(objFile.getUrl());
266
+
267
+ key = ss.getId();
268
+
269
+
270
+
271
+ xlsxName = fileName + "_" + nowDate + ".xlsx";
272
+
273
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
274
+
275
+ attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
276
+
277
+ }
278
+
279
+ }
280
+
281
+
282
+
283
+ // メール送信
284
+
285
+ subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
286
+
287
+ MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
288
+
289
+ }
290
+
291
+ ```