質問するログイン新規登録

質問編集履歴

3

GAS スプレッドシート

2016/08/10 14:09

投稿

TS8332
TS8332

スコア13

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

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

2016/08/10 14:09

投稿

TS8332
TS8332

スコア13

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

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

2016/08/08 15:56

投稿

TS8332
TS8332

スコア13

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 + "&amp;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 + "&amp;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
+ }