回答編集履歴
3
追記情報について修正を行いました。
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 + "&exportFormat=xlsx";
|
271
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&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
コメント部分の内容を追記しました。
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
コードの追加をしました
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 + "&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
|
+
```
|