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

回答編集履歴

3

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

2015/09/26 11:49

投稿

sgr-2
sgr-2

スコア294

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
- for (var i = 0; i < targetFolderIds.length; i++) {
120
+ for (var i = 0; i < targetFolderIds.length; i++) {
120
- // Idから対象フォルダ取得
121
+ // Idから対象フォルダ取得
121
- targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
122
+ targetFolder = DriveApp.getFolderById(targetFolderIds[i]);
122
- folderName = targetFolder.getName();
123
+ folderName = targetFolder.getName();
123
- body = body + folderName + "\n";
124
+ body = body + folderName + "\n";
124
125
 
125
- // 対象フォルダ以下のSpreadsheetを取得
126
+ // 対象フォルダ以下のSpreadsheetを取得
126
- objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
127
+ objFiles = targetFolder.getFilesByType(MimeType.GOOGLE_SHEETS);
127
128
 
128
- while (objFiles.hasNext()) {
129
+ while (objFiles.hasNext()) {
129
- objFile = objFiles.next();
130
+ objFile = objFiles.next();
131
+ key = objFile.getId();
130
- fileName = objFile.getName();
132
+ fileName = objFile.getName();
131
- body = body + " - " + fileName + "\n";
133
+ body = body + " - " + fileName + "\n";
132
134
 
133
- // Spreadsheetのオープン
134
- ss = SpreadsheetApp.openByUrl(objFile.getUrl());
135
- key = ss.getId();
136
-
137
- xlsxName = fileName + "_" + nowDate + ".xlsx";
135
+ xlsxName = fileName + "_" + nowDate + ".xlsx";
138
- fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
136
+ fetchUrl = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + key + "&amp;exportFormat=xlsx";
139
- attachmentFiles.push(UrlFetchApp.fetch(fetchUrl, fetchOpt).getBlob().setName(xlsxName));
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

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

2015/09/26 11:49

投稿

sgr-2
sgr-2

スコア294

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

コードの追加をしました

2015/09/24 12:20

投稿

sgr-2
sgr-2

スコア294

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