質問編集履歴
3
GAS スプレッドシート
title
CHANGED
File without changes
|
body
CHANGED
@@ -137,4 +137,54 @@
|
|
137
137
|
// メール送信
|
138
138
|
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
139
139
|
}
|
140
|
+
```
|
141
|
+
|
142
|
+
sgr-2様のアドバイス後下記の通り修正を行い、
|
143
|
+
添付のあるメールを送る事までは出来ましたが、
|
144
|
+
添付されたExcelには、データはなく開く事もできませんでした。
|
145
|
+
もしかしたらでもなく、まだ余計なコードを書いてしまっているのかもしれません。
|
146
|
+
|
147
|
+
```
|
148
|
+
function sendMail_Excel() {
|
149
|
+
// フォルダ、ファイル関係
|
150
|
+
var targetFileId = ["スプレッドシートのファイルID"];
|
151
|
+
var targetFolder;
|
152
|
+
var folderName;
|
153
|
+
var objFiles;
|
154
|
+
var objFile;
|
155
|
+
var fileName;
|
156
|
+
var key;
|
157
|
+
|
158
|
+
// メール関係
|
159
|
+
var mailto = "自分のアドレス@gmail.com";
|
160
|
+
var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
161
|
+
var body = "";
|
162
|
+
|
163
|
+
// その他
|
164
|
+
var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
|
165
|
+
var fetchUrl;
|
166
|
+
var fetchOpt = {
|
167
|
+
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
|
168
|
+
"muteHttpExceptions" : true
|
169
|
+
};
|
170
|
+
|
171
|
+
var xlsxName;
|
172
|
+
var attachmentFiles = new Array();
|
173
|
+
|
174
|
+
// 添付するファイルの名前を指定
|
175
|
+
xlsxName = "付けたい名前.xlsx";
|
176
|
+
|
177
|
+
try
|
178
|
+
{
|
179
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + targetFileId + "&exportFormat=xlsx";
|
180
|
+
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
|
181
|
+
}
|
182
|
+
catch(e){
|
183
|
+
subject = "ERROR:" + subject;
|
184
|
+
body = "エラー : " + e.message;
|
185
|
+
}
|
186
|
+
|
187
|
+
// メール送信
|
188
|
+
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
189
|
+
}
|
140
190
|
```
|
2
コードブロックを追加しました。これで大丈夫でしょうか?
title
CHANGED
File without changes
|
body
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
|
14
14
|
【参考コード】
|
15
15
|
|
16
|
+
```GoogleAppscript
|
16
17
|
function sendMail_Excel2() {
|
17
18
|
// フォルダ、ファイル関係
|
18
19
|
var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
|
@@ -71,11 +72,14 @@
|
|
71
72
|
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
72
73
|
}
|
73
74
|
|
75
|
+
```
|
76
|
+
|
74
77
|
【うまく動作しないコード】
|
75
78
|
上記参考コードの内、ファイルIDとメールアドレスさえ修正しておけば、
|
76
79
|
スプレッドシートがExcel形式に変換されて、添付メールとなって送る事が出来ると思ったのですが・・・・・。
|
77
80
|
すみません。GASに触れる事が今回初めてなもので。
|
78
81
|
|
82
|
+
```GoogleAppscript
|
79
83
|
function sendMail_Excel2() {
|
80
84
|
// フォルダ、ファイル関係
|
81
85
|
var targetFolderIds = [”対象のスプレッドシートのファイルIDを入力"];
|
@@ -132,4 +136,5 @@
|
|
132
136
|
|
133
137
|
// メール送信
|
134
138
|
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
135
|
-
}
|
139
|
+
}
|
140
|
+
```
|
1
参考にしたコードと実装してもうまくいかないコードを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,4 +9,127 @@
|
|
9
9
|
そもそも使い方が間違っているのでしょうか・・・・。
|
10
10
|
|
11
11
|
何か良い方法がありましたらご教示いただければ幸いです。
|
12
|
-
宜しくお願いいたします。
|
12
|
+
宜しくお願いいたします。
|
13
|
+
|
14
|
+
【参考コード】
|
15
|
+
|
16
|
+
function sendMail_Excel2() {
|
17
|
+
// フォルダ、ファイル関係
|
18
|
+
var targetFolderIds = ["folder1", "folder2", "folder3", "folder4", "folder5"];
|
19
|
+
var targetFolder;
|
20
|
+
var folderName;
|
21
|
+
var objFiles;
|
22
|
+
var objFile;
|
23
|
+
var fileName;
|
24
|
+
var key;
|
25
|
+
|
26
|
+
// メール関係
|
27
|
+
var mailto = "@gmail.com";
|
28
|
+
var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
29
|
+
var body = "";
|
30
|
+
|
31
|
+
// その他
|
32
|
+
var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
|
33
|
+
var fetchUrl;
|
34
|
+
var fetchOpt = {
|
35
|
+
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
|
36
|
+
"muteHttpExceptions" : true
|
37
|
+
};
|
38
|
+
|
39
|
+
var xlsxName;
|
40
|
+
var attachmentFiles = new Array();
|
41
|
+
|
42
|
+
try
|
43
|
+
{
|
44
|
+
for (var i = 0; i < targetFolderIds.length; i++) {
|
45
|
+
// Idから対象フォルダを取得
|
46
|
+
targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
|
47
|
+
folderName = targetFolder.getName();
|
48
|
+
body = body + folderName + "\n";
|
49
|
+
|
50
|
+
// 対象フォルダ以下のSpreadsheetを取得
|
51
|
+
objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
|
52
|
+
|
53
|
+
while (objFiles.hasNext()) {
|
54
|
+
objFile = objFiles.next();
|
55
|
+
key = objFile.getId();
|
56
|
+
fileName = objFile.getName();
|
57
|
+
body = body + " - " + fileName + "\n";
|
58
|
+
|
59
|
+
xlsxName = fileName + "_" + nowDate + ".xlsx";
|
60
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&exportFormat=xlsx";
|
61
|
+
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
catch(e){
|
66
|
+
subject = "ERROR:" + subject;
|
67
|
+
body = "エラー : " + e.message;
|
68
|
+
}
|
69
|
+
|
70
|
+
// メール送信
|
71
|
+
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
72
|
+
}
|
73
|
+
|
74
|
+
【うまく動作しないコード】
|
75
|
+
上記参考コードの内、ファイルIDとメールアドレスさえ修正しておけば、
|
76
|
+
スプレッドシートがExcel形式に変換されて、添付メールとなって送る事が出来ると思ったのですが・・・・・。
|
77
|
+
すみません。GASに触れる事が今回初めてなもので。
|
78
|
+
|
79
|
+
function sendMail_Excel2() {
|
80
|
+
// フォルダ、ファイル関係
|
81
|
+
var targetFolderIds = [”対象のスプレッドシートのファイルIDを入力"];
|
82
|
+
var targetFolder;
|
83
|
+
var folderName;
|
84
|
+
var objFiles;
|
85
|
+
var objFile;
|
86
|
+
var fileName;
|
87
|
+
var key;
|
88
|
+
|
89
|
+
// メール関係
|
90
|
+
var mailto = "自分のメールアドレスを入力@gmail.com";
|
91
|
+
var subject = "[GoogleDrive]定期バックアップ(" + Utilities.formatDate(new Date(), 'JST', 'yyyy/MM/dd') + ")";
|
92
|
+
var body = "";
|
93
|
+
|
94
|
+
// その他
|
95
|
+
var nowDate = Utilities.formatDate(new Date(), 'JST', 'yyyyMMdd');
|
96
|
+
var fetchUrl;
|
97
|
+
var fetchOpt = {
|
98
|
+
"headers" : { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
|
99
|
+
"muteHttpExceptions" : true
|
100
|
+
};
|
101
|
+
|
102
|
+
var xlsxName;
|
103
|
+
var attachmentFiles = new Array();
|
104
|
+
|
105
|
+
try
|
106
|
+
{
|
107
|
+
for (var i = 0; i < targetFolderIds.length; i++) {
|
108
|
+
// Idから対象フォルダを取得
|
109
|
+
targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
|
110
|
+
folderName = targetFolder.getName();
|
111
|
+
body = body + folderName + "\n";
|
112
|
+
|
113
|
+
// 対象フォルダ以下のSpreadsheetを取得
|
114
|
+
objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
|
115
|
+
|
116
|
+
while (objFiles.hasNext()) {
|
117
|
+
objFile = objFiles.next();
|
118
|
+
key = objFile.getId();
|
119
|
+
fileName = objFile.getName();
|
120
|
+
body = body + " - " + fileName + "\n";
|
121
|
+
|
122
|
+
xlsxName = fileName + "_" + nowDate + ".xlsx";
|
123
|
+
fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&exportFormat=xlsx";
|
124
|
+
attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
catch(e){
|
129
|
+
subject = "ERROR:" + subject;
|
130
|
+
body = "エラー : " + e.message;
|
131
|
+
}
|
132
|
+
|
133
|
+
// メール送信
|
134
|
+
MailApp.sendEmail(mailto, subject, body, {attachments:attachmentFiles});
|
135
|
+
}
|