回答編集履歴
3
追記情報について修正を行いました。
answer
CHANGED
@@ -84,9 +84,10 @@
|
|
84
84
|
---
|
85
85
|
**追記 2015/09/24 18:27頃**
|
86
86
|
|
87
|
+
**編集 2015/09/26 20:48頃**
|
88
|
+
|
87
89
|
Spreadsheet単位(Excelで言うワークブック単位)でxlsxファイルを作成し、メール添付出来るようにしたコードを追記させてもらいます。
|
88
90
|
ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
|
89
|
-
**※コメントの通り現在確認中の内容ありです※**
|
90
91
|
```Google Apps Script
|
91
92
|
function sendMail_Excel2() {
|
92
93
|
// フォルダ、ファイル関係
|
@@ -96,14 +97,11 @@
|
|
96
97
|
var objFiles;
|
97
98
|
var objFile;
|
98
99
|
var fileName;
|
99
|
-
|
100
|
-
// スプレッドシート関係
|
101
|
-
var ss;
|
102
100
|
var key;
|
103
101
|
|
104
102
|
// メール関係
|
105
103
|
var mailto = "@gmail.com";
|
106
|
-
var subject = "";
|
104
|
+
var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
107
105
|
var body = "";
|
108
106
|
|
109
107
|
// その他
|
@@ -113,35 +111,39 @@
|
|
113
111
|
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
|
114
112
|
"muteHttpExceptions" : true
|
115
113
|
};
|
114
|
+
|
116
115
|
var xlsxName;
|
117
116
|
var attachmentFiles = new Array();
|
118
117
|
|
118
|
+
try
|
119
|
+
{
|
119
|
-
|
120
|
+
for (var i = 0; i < targetFolderIds.length; i++) {
|
120
|
-
|
121
|
+
// Idから対象フォルダを取得
|
121
|
-
|
122
|
+
targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
|
122
|
-
|
123
|
+
folderName = targetFolder.getName();
|
123
|
-
|
124
|
+
body = body + folderName + "\n";
|
124
125
|
|
125
|
-
|
126
|
+
// 対象フォルダ以下のSpreadsheetを取得
|
126
|
-
|
127
|
+
objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
|
127
128
|
|
128
|
-
|
129
|
+
while (objFiles.hasNext()) {
|
129
|
-
|
130
|
+
objFile = objFiles.next();
|
131
|
+
key = objFile.getId();
|
130
|
-
|
132
|
+
fileName = objFile.getName();
|
131
|
-
|
133
|
+
body = body + " - " + fileName + "\n";
|
132
134
|
|
133
|
-
// Spreadsheetのオープン
|
134
|
-
ss = SpreadsheetApp.openByUrl(objFile.getUrl());
|
135
|
-
key = ss.getId();
|
136
|
-
|
137
|
-
|
135
|
+
xlsxName = fileName + "_" + nowDate + ".xlsx";
|
138
|
-
|
136
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&exportFormat=xlsx";
|
139
|
-
|
137
|
+
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
|
138
|
+
}
|
140
139
|
}
|
141
140
|
}
|
141
|
+
catch(e){
|
142
|
+
subject = "ERROR:" + subject;
|
143
|
+
body = "エラー : " + e.message;
|
144
|
+
}
|
142
145
|
|
143
146
|
// メール送信
|
144
|
-
subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
145
147
|
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
146
148
|
}
|
147
149
|
```
|
2
コメント部分の内容を追記しました。
answer
CHANGED
@@ -86,6 +86,7 @@
|
|
86
86
|
|
87
87
|
Spreadsheet単位(Excelで言うワークブック単位)でxlsxファイルを作成し、メール添付出来るようにしたコードを追記させてもらいます。
|
88
88
|
ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
|
89
|
+
**※コメントの通り現在確認中の内容ありです※**
|
89
90
|
```Google Apps Script
|
90
91
|
function sendMail_Excel2() {
|
91
92
|
// フォルダ、ファイル関係
|
1
コードの追加をしました
answer
CHANGED
@@ -78,4 +78,69 @@
|
|
78
78
|
```
|
79
79
|
|
80
80
|
また、「定期的かつ自動で」もトリガー設定で実現可能と思います。
|
81
|
-
ドライブへのアクセスやメール送信など、承認が必要な機能がありますので、それらは一度手動で実行して許可してしまえば問題ないと思います。(月トリガーで日と時間帯を指定)
|
81
|
+
ドライブへのアクセスやメール送信など、承認が必要な機能がありますので、それらは一度手動で実行して許可してしまえば問題ないと思います。(月トリガーで日と時間帯を指定)
|
82
|
+
|
83
|
+
|
84
|
+
---
|
85
|
+
**追記 2015/09/24 18:27頃**
|
86
|
+
|
87
|
+
Spreadsheet単位(Excelで言うワークブック単位)でxlsxファイルを作成し、メール添付出来るようにしたコードを追記させてもらいます。
|
88
|
+
ルールは前と同じで、「フォルダID」と「送信先メールアドレス」を指定して頂ければ動作確認する事ができると思います。
|
89
|
+
```Google Apps Script
|
90
|
+
function sendMail_Excel2() {
|
91
|
+
// フォルダ、ファイル関係
|
92
|
+
var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
|
93
|
+
var targetFolder;
|
94
|
+
var folderName;
|
95
|
+
var objFiles;
|
96
|
+
var objFile;
|
97
|
+
var fileName;
|
98
|
+
|
99
|
+
// スプレッドシート関係
|
100
|
+
var ss;
|
101
|
+
var key;
|
102
|
+
|
103
|
+
// メール関係
|
104
|
+
var mailto = "@gmail.com";
|
105
|
+
var subject = "";
|
106
|
+
var body = "";
|
107
|
+
|
108
|
+
// その他
|
109
|
+
var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
|
110
|
+
var fetchUrl;
|
111
|
+
var fetchOpt = {
|
112
|
+
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
|
113
|
+
"muteHttpExceptions" : true
|
114
|
+
};
|
115
|
+
var xlsxName;
|
116
|
+
var attachmentFiles = new Array();
|
117
|
+
|
118
|
+
for (var i = 0; i < targetFolderIds.length; i++) {
|
119
|
+
// Idから対象フォルダの取得
|
120
|
+
targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
|
121
|
+
folderName = targetFolder.getName();
|
122
|
+
body = body + folderName + "\n";
|
123
|
+
|
124
|
+
// 対象フォルダ以下のSpreadsheetを取得
|
125
|
+
objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
|
126
|
+
|
127
|
+
while (objFiles.hasNext()) {
|
128
|
+
objFile = objFiles.next();
|
129
|
+
fileName = objFile.getName();
|
130
|
+
body = body + " - " + fileName + "\n";
|
131
|
+
|
132
|
+
// Spreadsheetのオープン
|
133
|
+
ss = SpreadsheetApp.openByUrl(objFile.getUrl());
|
134
|
+
key = ss.getId();
|
135
|
+
|
136
|
+
xlsxName = fileName + "_" + nowDate + ".xlsx";
|
137
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&exportFormat=xlsx";
|
138
|
+
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
|
139
|
+
}
|
140
|
+
}
|
141
|
+
|
142
|
+
// メール送信
|
143
|
+
subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
144
|
+
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
145
|
+
}
|
146
|
+
```
|