質問編集履歴
2
最終版
title
CHANGED
File without changes
|
body
CHANGED
@@ -8,27 +8,11 @@
|
|
8
8
|
|
9
9
|
### 発生している問題
|
10
10
|
|
11
|
-
~~現在のスクリプトではメールを送ることはできるのですが、添付ファイルがどのメールでも
|
12
|
-
1つ抜けてしまいます。(添付ファイル1~5まであるうちの1~4までしか送れないです。)~~
|
13
|
-
|
11
|
+
1,~~添付ファイルが1つ抜けてしまう~~
|
14
|
-
|
12
|
+
2,~~対象ファイル名(拡張子付き)がシート記載にあるが、google Drive上にデータが存在するとエラーが出てしまう。~~
|
15
13
|
|
16
|
-
1,~~添付ファイルが1つ抜けてしまう~~→前回ご回答にて解決することができました。
|
17
|
-
2,対象ファイル名(拡張子付き)がシート記載にあるが、google Drive上にデータが存在するとエラ
|
18
|
-
|
14
|
+
### 該当のソースコード
|
19
15
|
|
20
|
-
### 今回のエラー状況と試したこと
|
21
|
-
1, .getFilesByNameと.getFileByIdともにundefinedと定義されていないと出てきてしまう
|
22
|
-
2, attachmentFilesの部分が修正前の物でも同様のエラーが出てきてしまいます。
|
23
|
-
|
24
|
-
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
25
|
-
attachmentFiles.push(folderid[0].getFileById(fileID).next())
|
26
|
-
attachmentFiles.push(folderid[0].getFilesByName(arr[i][4]).next())
|
27
|
-
|
28
|
-
にファイル添付部分を変更したりしましたが、どれもダメでした。
|
29
|
-
|
30
|
-
### 該当のソースコード(ver.1.1)
|
31
|
-
|
32
16
|
```
|
33
17
|
function sendMail(){
|
34
18
|
|
@@ -67,121 +51,24 @@
|
|
67
51
|
DriveApp.getFolderById('----------------------------')
|
68
52
|
];
|
69
53
|
|
70
|
-
|
54
|
+
for(var i = 0; i < arr.length; i++){
|
71
|
-
|
72
|
-
//送付先メールアドレスを取得
|
73
|
-
var strTo = arr[i][3];
|
74
|
-
|
75
|
-
//添付ファイル1~5を取得(空白ならスキップ)
|
76
|
-
if(arr[i][4] != ''){
|
77
|
-
var filename = arr[i][4];
|
78
|
-
var files_ichiran = folderid.getFiles()
|
79
|
-
|
80
|
-
//ファイルがあるかどうか
|
81
|
-
if ( files_ichiran.hasNext() ){
|
82
|
-
while ( files_ichiran.hasNext() ){
|
83
|
-
var attachedfile = files_ichiran.next();
|
84
|
-
|
85
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
86
|
-
/var fileID = attachedfile.getId(); ファイルのIDの取得(ログ出しで確認の為)
|
87
|
-
//console.log(fileID, 'fileIDは?→取得できている')
|
88
|
-
//console.log(filename, '添付ファイル名は?→取得できている')
|
89
|
-
//添付する
|
90
|
-
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
91
|
-
}
|
92
|
-
}
|
93
|
-
}
|
94
|
-
}else{
|
95
|
-
}
|
96
55
|
|
97
|
-
|
56
|
+
//送付先メールアドレスを取得
|
98
|
-
|
57
|
+
var strTo = arr[i][3];
|
99
|
-
var files_ichiran = folderid.getFiles()
|
100
|
-
|
101
|
-
//ファイルがあるかどうか
|
102
|
-
if ( files_ichiran.hasNext() ){
|
103
|
-
while ( files_ichiran.hasNext() ){
|
104
|
-
var attachedfile = files_ichiran.next();
|
105
|
-
|
106
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
107
|
-
//var fileID = attachedfile.getId(); ファイルのIDの取得(ログ出しで確認の為)
|
108
|
-
//console.log(fileID, 'fileIDは?→取得できている')
|
109
|
-
//console.log(filename, '添付ファイル名は?→取得できている')
|
110
|
-
//添付する
|
111
|
-
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
112
|
-
}
|
113
|
-
}
|
114
|
-
}
|
115
|
-
}else{
|
116
|
-
}
|
117
58
|
|
59
|
+
for (var j = 0; j <= 5; j++) {
|
60
|
+
//添付ファイル1~5を取得(空白ならスキップ)
|
118
|
-
|
61
|
+
if(arr[i][j + 4] != ''){
|
119
|
-
|
62
|
+
var filename = arr[i][j + 4];
|
120
|
-
var files_ichiran = folderid.getFiles()
|
121
|
-
|
122
|
-
//ファイルがあるかどうか
|
123
|
-
if ( files_ichiran.hasNext() ){
|
124
|
-
while ( files_ichiran.hasNext() ){
|
125
|
-
var attachedfile = files_ichiran.next();
|
126
|
-
|
127
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
128
|
-
|
63
|
+
var files = folder.getFilesByName(filename);
|
129
|
-
}
|
130
|
-
}
|
131
|
-
}
|
132
|
-
}else{
|
133
|
-
}
|
134
64
|
|
135
|
-
if(arr[i][7] != ''){
|
136
|
-
var filename = arr[i][7];
|
137
|
-
var files_ichiran = folderid.getFiles()
|
138
|
-
|
139
|
-
|
65
|
+
//ファイルがあるかどうか
|
140
|
-
if ( files_ichiran.hasNext() ){
|
141
|
-
|
66
|
+
while (files.hasNext() ){
|
142
|
-
|
67
|
+
//添付する
|
143
|
-
|
144
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
145
|
-
|
68
|
+
attachmentFiles.push(files.next())
|
146
|
-
|
69
|
+
}
|
147
|
-
|
70
|
+
}
|
148
|
-
|
71
|
+
}
|
149
|
-
}else{
|
150
|
-
}
|
151
|
-
|
152
|
-
if(arr[i][8] != ''){
|
153
|
-
var filename = arr[i][8];
|
154
|
-
var files_ichiran = folderid.getFiles()
|
155
|
-
|
156
|
-
//ファイルがあるかどうか
|
157
|
-
if ( files_ichiran.hasNext() ){
|
158
|
-
while ( files_ichiran.hasNext() ){
|
159
|
-
var attachedfile = files_ichiran.next();
|
160
|
-
|
161
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
162
|
-
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
163
|
-
}
|
164
|
-
}
|
165
|
-
}
|
166
|
-
}else{
|
167
|
-
}
|
168
|
-
|
169
|
-
if(arr[i][9] != ''){
|
170
|
-
var filename = arr[i][9];
|
171
|
-
var files_ichiran = folderid.getFiles()
|
172
|
-
|
173
|
-
//ファイルがあるかどうか
|
174
|
-
if ( files_ichiran.hasNext() ){
|
175
|
-
while ( files_ichiran.hasNext() ){
|
176
|
-
var attachedfile = files_ichiran.next();
|
177
|
-
|
178
|
-
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
179
|
-
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
180
|
-
}
|
181
|
-
}
|
182
|
-
}
|
183
|
-
}else{
|
184
|
-
}
|
185
72
|
|
186
73
|
//-----------本文の差込データ作成------------
|
187
74
|
// 対象行の差込データを取得
|
@@ -233,29 +120,15 @@
|
|
233
120
|
];
|
234
121
|
sheet.addMenu("スクリプト実行", entries);
|
235
122
|
};
|
236
|
-
|
237
123
|
```
|
238
|
-
|
239
124
|
### 補足情報(FW/ツールのバージョンなど)
|
240
125
|
こちらを参考にしました。
|
241
126
|
[リンク](https://teratail.com/questions/119142)
|
242
127
|
|
243
|
-
添付がズレている点の修正とファイルのあるかどうかを修正しました。(ver1.
|
128
|
+
添付がズレている点の修正とファイルのあるかどうかを修正しました。(ver1.1)
|
244
129
|
実現したいことの文を修正しました。
|
245
130
|
|
246
|
-
修正前の構文
|
247
|
-
```
|
248
|
-
//フォルダー情報を添付ファイルのフォルダIDで取得
|
249
|
-
var folders = DriveApp.getFolderById('-----------');
|
250
|
-
//~省略~
|
251
|
-
for(var i = 0, l = arr.length; i < l; i++){
|
252
|
-
|
253
|
-
if(arr[i][4] != ''){
|
254
|
-
attachmentFiles.push(folders[0].getFilesByName(arr[i][4]).next());
|
255
|
-
}
|
256
|
-
//以下、arr[i][4]の部分をarr[i][9]まで繰り返し
|
257
|
-
```
|
258
|
-
参考スクリプト
|
131
|
+
参考スクリプト
|
259
132
|
スプレッドシート上のファイルがあるか判断して削除していく
|
260
133
|
```
|
261
134
|
function myFunction() {
|
@@ -281,19 +154,8 @@
|
|
281
154
|
}
|
282
155
|
}else{}
|
283
156
|
}
|
284
|
-
//
|
157
|
+
//略
|
285
158
|
}
|
286
159
|
}
|
287
160
|
}
|
288
|
-
|
289
|
-
//~以下、開いたときの動作は省略~
|
290
|
-
|
291
|
-
```
|
161
|
+
```
|
292
|
-
|
293
|
-
### 全体の運用予定
|
294
|
-
ソフト、VBAで出力(エクセル,PDF出力したものを最終確認をし、Driveにアップ。既存流用)
|
295
|
-
↓
|
296
|
-
添付ファイルを探して宛先に送付(今回の作成している部分)
|
297
|
-
↓
|
298
|
-
Drive内ファイル削除(上記参考スクリプト。新規作成)
|
299
|
-
(同じシートを元にする事で、削除できなかったものは、添付エラーしたものとわかる)
|
1
構文の修正、追加と文章情報についての更新
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,18 +6,29 @@
|
|
6
6
|
フォルダの中に同じファイル名はなく、毎月同じ名前のファイル(ファイル数は異なる)を
|
7
7
|
googleドライブに保存し、それを添付して送りたいです。
|
8
8
|
|
9
|
+
### 発生している問題
|
9
10
|
|
10
|
-
### 発生している問題・エラーメッセージ
|
11
|
-
|
12
|
-
|
11
|
+
~~現在のスクリプトではメールを送ることはできるのですが、添付ファイルがどのメールでも
|
13
|
-
1つ抜けてしまいます。(添付ファイル1~5まであるうちの1~4までしか送れないです。)
|
12
|
+
1つ抜けてしまいます。(添付ファイル1~5まであるうちの1~4までしか送れないです。)~~
|
14
|
-
|
15
13
|
また、ファイル名が添付ファイル名記載のなかで2つ以上存在しない、
|
16
14
|
若しくはファイル名の番号が飛んでいると、そこで動作が停止してしまいます。
|
17
15
|
|
16
|
+
1,~~添付ファイルが1つ抜けてしまう~~→前回ご回答にて解決することができました。
|
17
|
+
2,対象ファイル名(拡張子付き)がシート記載にあるが、google Drive上にデータが存在するとエラ
|
18
|
+
ーが出てしまう。
|
18
19
|
|
19
|
-
###
|
20
|
+
### 今回のエラー状況と試したこと
|
21
|
+
1, .getFilesByNameと.getFileByIdともにundefinedと定義されていないと出てきてしまう
|
22
|
+
2, attachmentFilesの部分が修正前の物でも同様のエラーが出てきてしまいます。
|
20
23
|
|
24
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
25
|
+
attachmentFiles.push(folderid[0].getFileById(fileID).next())
|
26
|
+
attachmentFiles.push(folderid[0].getFilesByName(arr[i][4]).next())
|
27
|
+
|
28
|
+
にファイル添付部分を変更したりしましたが、どれもダメでした。
|
29
|
+
|
30
|
+
### 該当のソースコード(ver.1.1)
|
31
|
+
|
21
32
|
```
|
22
33
|
function sendMail(){
|
23
34
|
|
@@ -52,7 +63,7 @@
|
|
52
63
|
*/
|
53
64
|
|
54
65
|
//フォルダー情報を添付ファイルのフォルダIDで取得
|
55
|
-
var
|
66
|
+
var folderid = [
|
56
67
|
DriveApp.getFolderById('----------------------------')
|
57
68
|
];
|
58
69
|
|
@@ -62,21 +73,115 @@
|
|
62
73
|
var strTo = arr[i][3];
|
63
74
|
|
64
75
|
//添付ファイル1~5を取得(空白ならスキップ)
|
76
|
+
if(arr[i][4] != ''){
|
77
|
+
var filename = arr[i][4];
|
78
|
+
var files_ichiran = folderid.getFiles()
|
79
|
+
|
80
|
+
//ファイルがあるかどうか
|
81
|
+
if ( files_ichiran.hasNext() ){
|
82
|
+
while ( files_ichiran.hasNext() ){
|
83
|
+
var attachedfile = files_ichiran.next();
|
84
|
+
|
85
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
86
|
+
/var fileID = attachedfile.getId(); ファイルのIDの取得(ログ出しで確認の為)
|
87
|
+
//console.log(fileID, 'fileIDは?→取得できている')
|
88
|
+
//console.log(filename, '添付ファイル名は?→取得できている')
|
89
|
+
//添付する
|
90
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}else{
|
95
|
+
}
|
96
|
+
|
65
|
-
|
97
|
+
if(arr[i][5] != ''){
|
98
|
+
var filename = arr[i][5];
|
99
|
+
var files_ichiran = folderid.getFiles()
|
100
|
+
|
101
|
+
//ファイルがあるかどうか
|
102
|
+
if ( files_ichiran.hasNext() ){
|
103
|
+
while ( files_ichiran.hasNext() ){
|
104
|
+
var attachedfile = files_ichiran.next();
|
105
|
+
|
106
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
107
|
+
//var fileID = attachedfile.getId(); ファイルのIDの取得(ログ出しで確認の為)
|
108
|
+
//console.log(fileID, 'fileIDは?→取得できている')
|
109
|
+
//console.log(filename, '添付ファイル名は?→取得できている')
|
110
|
+
//添付する
|
66
|
-
|
111
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
67
|
-
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
}else{
|
116
|
+
}
|
117
|
+
|
68
|
-
|
118
|
+
if(arr[i][6] != ''){
|
119
|
+
var filename = arr[i][6];
|
120
|
+
var files_ichiran = folderid.getFiles()
|
121
|
+
|
122
|
+
//ファイルがあるかどうか
|
123
|
+
if ( files_ichiran.hasNext() ){
|
124
|
+
while ( files_ichiran.hasNext() ){
|
125
|
+
var attachedfile = files_ichiran.next();
|
126
|
+
|
127
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
69
|
-
|
128
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
70
|
-
|
132
|
+
}else{
|
133
|
+
}
|
134
|
+
|
71
|
-
|
135
|
+
if(arr[i][7] != ''){
|
136
|
+
var filename = arr[i][7];
|
137
|
+
var files_ichiran = folderid.getFiles()
|
138
|
+
|
139
|
+
//ファイルがあるかどうか
|
140
|
+
if ( files_ichiran.hasNext() ){
|
141
|
+
while ( files_ichiran.hasNext() ){
|
142
|
+
var attachedfile = files_ichiran.next();
|
143
|
+
|
144
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
72
|
-
|
145
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
73
|
-
|
146
|
+
}
|
147
|
+
}
|
148
|
+
}
|
149
|
+
}else{
|
150
|
+
}
|
151
|
+
|
74
|
-
|
152
|
+
if(arr[i][8] != ''){
|
153
|
+
var filename = arr[i][8];
|
154
|
+
var files_ichiran = folderid.getFiles()
|
155
|
+
|
156
|
+
//ファイルがあるかどうか
|
157
|
+
if ( files_ichiran.hasNext() ){
|
158
|
+
while ( files_ichiran.hasNext() ){
|
159
|
+
var attachedfile = files_ichiran.next();
|
160
|
+
|
161
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
75
|
-
|
162
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
76
|
-
|
163
|
+
}
|
164
|
+
}
|
165
|
+
}
|
166
|
+
}else{
|
167
|
+
}
|
168
|
+
|
77
|
-
|
169
|
+
if(arr[i][9] != ''){
|
170
|
+
var filename = arr[i][9];
|
171
|
+
var files_ichiran = folderid.getFiles()
|
172
|
+
|
173
|
+
//ファイルがあるかどうか
|
174
|
+
if ( files_ichiran.hasNext() ){
|
175
|
+
while ( files_ichiran.hasNext() ){
|
176
|
+
var attachedfile = files_ichiran.next();
|
177
|
+
|
178
|
+
if ( attachedfile.getName().indexOf(filename) != -1 ){
|
78
|
-
|
179
|
+
attachmentFiles.push(folderid[0].getFilesByName(filename).next())
|
79
|
-
|
180
|
+
}
|
181
|
+
}
|
182
|
+
}
|
183
|
+
}else{
|
184
|
+
}
|
80
185
|
|
81
186
|
//-----------本文の差込データ作成------------
|
82
187
|
// 対象行の差込データを取得
|
@@ -131,10 +236,64 @@
|
|
131
236
|
|
132
237
|
```
|
133
238
|
|
134
|
-
### 試したこと
|
135
|
-
var arr の部分でデータが取得できていることログで確認しています。
|
136
|
-
For 以下の添付部分が上手く動かず、その後の文章差込と送信はできます。
|
137
|
-
|
138
239
|
### 補足情報(FW/ツールのバージョンなど)
|
139
240
|
こちらを参考にしました。
|
140
|
-
[リンク](https://teratail.com/questions/119142)
|
241
|
+
[リンク](https://teratail.com/questions/119142)
|
242
|
+
|
243
|
+
添付がズレている点の修正とファイルのあるかどうかを修正しました。(ver1.2)
|
244
|
+
実現したいことの文を修正しました。
|
245
|
+
|
246
|
+
修正前の構文
|
247
|
+
```
|
248
|
+
//フォルダー情報を添付ファイルのフォルダIDで取得
|
249
|
+
var folders = DriveApp.getFolderById('-----------');
|
250
|
+
//~省略~
|
251
|
+
for(var i = 0, l = arr.length; i < l; i++){
|
252
|
+
|
253
|
+
if(arr[i][4] != ''){
|
254
|
+
attachmentFiles.push(folders[0].getFilesByName(arr[i][4]).next());
|
255
|
+
}
|
256
|
+
//以下、arr[i][4]の部分をarr[i][9]まで繰り返し
|
257
|
+
```
|
258
|
+
参考スクリプト(ver1.2用)
|
259
|
+
スプレッドシート上のファイルがあるか判断して削除していく
|
260
|
+
```
|
261
|
+
function myFunction() {
|
262
|
+
var folderid = DriveApp.getFolderById('-----------');
|
263
|
+
var book = SpreadsheetApp.getActiveSpreadsheet();
|
264
|
+
var Atesakisheet = book.getSheetByName("宛先リスト");
|
265
|
+
var lastRow = Atesakisheet.getLastRow();
|
266
|
+
var arr = Atesakisheet.getRange(2, 5, lastRow - 1 , 12).getValues();
|
267
|
+
|
268
|
+
for(var i = 0, l = arr.length; i < l; i++){
|
269
|
+
|
270
|
+
if(arr[i][0] != ''){
|
271
|
+
var filesname = arr[i][0]
|
272
|
+
var files_ichiran = folderid.getFiles();
|
273
|
+
if ( files_ichiran.hasNext() ){
|
274
|
+
while ( files_ichiran.hasNext() ){
|
275
|
+
var deletefiles = files_ichiran.next();
|
276
|
+
if ( deletefiles.getName().indexOf(arr[i][0]) != -1 ){
|
277
|
+
var deletefiles = deletefiles.getId();
|
278
|
+
var deletefile = DriveApp.getFileById(deletefiles);
|
279
|
+
deletefile.setTrashed(true);
|
280
|
+
}
|
281
|
+
}
|
282
|
+
}else{}
|
283
|
+
}
|
284
|
+
//以下、arr[i][0]を変えて繰り返し
|
285
|
+
}
|
286
|
+
}
|
287
|
+
}
|
288
|
+
|
289
|
+
//~以下、開いたときの動作は省略~
|
290
|
+
|
291
|
+
```
|
292
|
+
|
293
|
+
### 全体の運用予定
|
294
|
+
ソフト、VBAで出力(エクセル,PDF出力したものを最終確認をし、Driveにアップ。既存流用)
|
295
|
+
↓
|
296
|
+
添付ファイルを探して宛先に送付(今回の作成している部分)
|
297
|
+
↓
|
298
|
+
Drive内ファイル削除(上記参考スクリプト。新規作成)
|
299
|
+
(同じシートを元にする事で、削除できなかったものは、添付エラーしたものとわかる)
|