質問編集履歴

2

ソースコード、発生しているエラーメッセージ

2018/06/26 03:09

投稿

pee.cyon.cyon
pee.cyon.cyon

スコア12

test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,21 @@
28
28
 
29
29
  ```
30
30
 
31
+
32
+
33
+ 下記のソースコードは、別々の宛先に氏名・本文を差し込んで、同じフォルダーIDのPDF添付ファイル(同内容のもの)を
34
+
35
+ 一斉送信することが可能です。
36
+
37
+
38
+
39
+ 希望は、別々の宛先に氏名・本文を差し込んで、<別々のフォルダーID>のPDF添付ファイル(<別内容のもの>)を
40
+
31
- 最初の段階ある “関数の実行” も実行することができません。
41
+ 差し込ん送信することなのです、その方法がわかりません。
42
+
43
+ <別内容>の添付ファイルを差し込むにはどうしたらよいか、ご教示願えないでしょうか。
44
+
45
+
32
46
 
33
47
  ```
34
48
 
@@ -40,13 +54,13 @@
40
54
 
41
55
  ```ここに言語名を入力
42
56
 
43
- function sendMailWithAttachments(){
57
+ function send_mail(){
44
58
 
59
+
45
60
 
61
+ /* スプレッドシートのシートを取得と準備 */
46
62
 
47
- /* スプレッドシートのシートを取得と準備 */
48
-
49
- var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
63
+ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
50
64
 
51
65
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
52
66
 
@@ -54,23 +68,17 @@
54
68
 
55
69
  /* ドキュメントを取得する */
56
70
 
57
- var docTest=DocumentApp.openById("ドキュメントID"); //ドキュメントをIDで取得
71
+ var docTest=DocumentApp.openById("-----------"); //ドキュメントをIDで取得
58
72
 
59
73
  var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
60
74
 
61
75
 
62
76
 
63
- /* メール表題、fromアドレス、差出人名を準備 */
77
+ /* メール表題、fromアドレス、差出人名を準備 */
64
78
 
65
- var strSubject="●●●●(▼▼)"; //表題
79
+ var strSubject="テストタイトル"; //表題
66
80
 
67
- var strSender="■■■■"; //差出人
81
+ var strSender="名前"; //差出人
68
-
69
-
70
-
71
- /* シートの全ての行について社名、姓名を差し込みログに表示*/
72
-
73
- for(var i=2;i<=rowSheet;i++){
74
82
 
75
83
 
76
84
 
@@ -80,25 +88,25 @@
80
88
 
81
89
 
82
90
 
83
- var strSyokusyu=mySheet.getRange(i,1).getValue(); //
91
+ var strSyokusyu=mySheet.getRange(i,1).getValue();
84
92
 
85
- var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
93
+ var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); 
86
94
 
87
- var strSekininsha=mySheet.getRange(i,3).getValue(); //
95
+ var strSekininsha=mySheet.getRange(i,3).getValue(); 
88
96
 
89
- var strShimei=mySheet.getRange(i,4).getValue(); //
97
+ var strShimei=mySheet.getRange(i,4).getValue(); 
90
98
 
91
- var strFurigana=mySheet.getRange(i,5).getValue(); //
99
+ var strFurigana=mySheet.getRange(i,5).getValue();
92
100
 
93
- var strTo=mySheet.getRange(i,6).getValue(); //
101
+ var strTo=mySheet.getRange(i,6).getValue(); 
94
102
 
95
- var strCc=mySheet.getRange(i,7).getValue(); //
96
-
97
- var strfolder=mySheet.getRange(i,8).getValue(); //
103
+ var strfile=mySheet.getRange(i,7).getValue();
98
104
 
99
105
 
100
106
 
101
- var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{氏名}/,strShimei).replace(/{フリガナ}/,strFurigana); //社名、名を置換
107
+ var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{●●}/,strShimei).replace(/{●●}/,strFurigana); //社名、名を置換
108
+
109
+
102
110
 
103
111
 
104
112
 
@@ -106,73 +114,19 @@
106
114
 
107
115
 
108
116
 
117
+ var folder=DriveApp.getFolderById('--------------');
109
118
 
119
+ var files=folder.getFiles();
110
120
 
111
- // 添付ファイル用の配列を作成
121
+ var attachments=[];
112
122
 
113
- var attachmentFiles =[];
123
+ while(files.hasNext()){
114
124
 
125
+ attachments.push(files.next());
115
126
 
127
+
116
128
 
117
- var arr = mySheet.getRange(2, 2, 4, 4).getValues();//
118
-
119
-
120
-
121
- //処理負荷軽減のためまとめてフォルダー情報を取得
122
-
123
-
124
-
125
- var folders = [
126
-
127
- DriveApp.getFolderById('添付1ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
128
-
129
- DriveApp.getFolderById('添付2ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
130
-
131
- DriveApp.getFolderById('添付3ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
132
-
133
- ];
134
-
135
-
136
-
137
-
138
-
139
- for(var i = 0, i= arr.length; i <1; i++){
140
-
141
-
142
-
143
- var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
144
-
145
-
146
-
147
- //添付ファイル1~3を取得(空白ならスキップ)
148
-
149
-
150
-
151
- if(arr[i][1] != ''){
152
-
153
- attachmentFiles.push(folders[0].getFilesByName(arr[i][1]).next());
154
-
155
- }
129
+ }
156
-
157
- if(arr[i][2] != ''){
158
-
159
- attachmentFiles.push(folders[1].getFilesByName(arr[i][2]).next());
160
-
161
- }
162
-
163
- if(arr[i][3] != ''){
164
-
165
- attachmentFiles.push(folders[2].getFilesByName(arr[i][3]).next());
166
-
167
- }
168
-
169
- }
170
-
171
-
172
-
173
- var strBody=strDoc
174
-
175
-
176
130
 
177
131
 
178
132
 
@@ -180,15 +134,13 @@
180
134
 
181
135
  strTo,
182
136
 
183
- strCc,
184
-
185
137
  strSubject,
186
138
 
187
139
  strBody,
188
140
 
189
- {attachments: attachmentFiles}
141
+ {attachments:attachments}
190
142
 
191
- );
143
+ );
192
144
 
193
145
  }
194
146
 
@@ -196,21 +148,13 @@
196
148
 
197
149
 
198
150
 
199
- }
200
-
201
- ```
202
-
203
-
204
-
205
151
  ### 試したこと
206
152
 
207
153
 
208
154
 
209
- 添付ファイルを付けずに実行すれば、ドキュメントの本文に、氏名等を差し込んで
155
+ ドキュメントの本文に、氏名等を差し込んで、同じ内容の添付ファイルを一斉送信することは可能です。
210
156
 
211
- Gmailに送信することはできるのですが、添付ファイルをいざつけようと思うと
212
-
213
- なかうくいきません。アドバイスをいただけますと幸いです。
157
+ 宛先ごとに個別の添付ファイルをつける方法が見つません。ご教示願えれば幸いです。
214
158
 
215
159
 
216
160
 

1

ソースコードを変更しました

2018/06/26 03:09

投稿

pee.cyon.cyon
pee.cyon.cyon

スコア12

test CHANGED
File without changes
test CHANGED
@@ -44,27 +44,27 @@
44
44
 
45
45
 
46
46
 
47
- /* スプレッドシートのシートを取得と準備 */
47
+ /* スプレッドシートのシートを取得と準備 */
48
48
 
49
49
  var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
50
50
 
51
51
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
52
52
 
53
-
54
-
53
+
54
+
55
- /* ドキュメント「メール本文」を取得する */
55
+ /* ドキュメントを取得する */
56
-
56
+
57
- var docTest=DocumentApp.openById("-------------------"); //メール本文のドキュメントをIDで取得
57
+ var docTest=DocumentApp.openById("ドキュメントID"); //ドキュメントをIDで取得
58
-
58
+
59
- var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
59
+ var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
60
-
61
-
62
-
60
+
61
+
62
+
63
- /* メール表題、fromアドレス、差出人名を準備 */
63
+ /* メール表題、fromアドレス、差出人名を準備 */
64
-
64
+
65
- var strSubject="●●●●(/{●●}/)"; //表題
65
+ var strSubject="●●●●(▼▼)"; //表題
66
-
66
+
67
- var strSender="▼▼▼"; //差出人
67
+ var strSender="■■■■"; //差出人
68
68
 
69
69
 
70
70
 
@@ -74,27 +74,41 @@
74
74
 
75
75
 
76
76
 
77
+ /* シートの全ての行について社名、姓名を差し込みログに表示*/
78
+
79
+ for(var i=2;i<=rowSheet;i++){
80
+
81
+
82
+
77
- var strSyokusyu=mySheet.getRange(i,1).getValue(); //
83
+ var strSyokusyu=mySheet.getRange(i,1).getValue(); //
78
-
84
+
79
- var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
85
+ var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
80
-
86
+
81
- var strSekininsha=mySheet.getRange(i,3).getValue(); //
87
+ var strSekininsha=mySheet.getRange(i,3).getValue(); //
82
-
88
+
83
- var strShimei=mySheet.getRange(i,4).getValue(); //
89
+ var strShimei=mySheet.getRange(i,4).getValue(); //
84
-
90
+
85
- var strFurigana=mySheet.getRange(i,5).getValue(); //
91
+ var strFurigana=mySheet.getRange(i,5).getValue(); //
86
-
92
+
87
- var strTo=mySheet.getRange(i,6).getValue(); //toアドレス
93
+ var strTo=mySheet.getRange(i,6).getValue(); //
94
+
88
-
95
+ var strCc=mySheet.getRange(i,7).getValue(); //
96
+
89
-
97
+ var strfolder=mySheet.getRange(i,8).getValue(); //
90
-
98
+
99
+
100
+
91
- var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{●●}/,strShimei).replace(/{●●}/,strFurigana); //●●
101
+ var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{氏名}/,strShimei).replace(/{フリガナ}/,strFurigana); //社名、氏名を置換
102
+
103
+
104
+
92
-
105
+ Logger.log(strBody); //ドキュメントの内容をログに表示
93
-
94
-
95
-
96
-
106
+
107
+
108
+
109
+
110
+
97
- // 添付ファイル用の配列を作成
111
+ // 添付ファイル用の配列を作成
98
112
 
99
113
  var attachmentFiles =[];
100
114
 
@@ -110,11 +124,11 @@
110
124
 
111
125
  var folders = [
112
126
 
113
- DriveApp.getFolderById("添付1ファイルID"); //(添付1ファイル)のフォルダIDで取得
127
+ DriveApp.getFolderById('添付1ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
114
-
128
+
115
- DriveApp.getFolderById("添付2ファイルID"); //(添付2ファイル)のフォルダIDで取得
129
+ DriveApp.getFolderById('添付2ファイルのフォルダID'), //(添付1・・3ファイル)のフォルダIDは同一フォルダの中の同じID
116
-
130
+
117
- DriveApp.getFolderById("添付3ファイルID"); //(添付3ファイル)のフォルダIDで取得
131
+ DriveApp.getFolderById('添付3ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
118
132
 
119
133
  ];
120
134
 
@@ -122,11 +136,11 @@
122
136
 
123
137
 
124
138
 
125
- for(var i = 0, i= arr.length; i <1; i++){
139
+ for(var i = 0, i= arr.length; i <1; i++){
126
-
127
-
128
-
140
+
141
+
142
+
129
- var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
143
+ var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
130
144
 
131
145
 
132
146
 
@@ -160,27 +174,29 @@
160
174
 
161
175
 
162
176
 
163
- /* メールを送信 */
177
+
164
-
178
+
165
- GmailApp.sendEmail(
179
+ GmailApp.sendEmail(
166
-
180
+
167
- strTo, //toアドレス
181
+ strTo,
182
+
168
-
183
+ strCc,
184
+
169
- strSubject, //表題
185
+ strSubject,
170
-
186
+
171
- strBody, //本文
187
+ strBody,
172
-
173
- {
188
+
174
-
175
- name: strSender, //差出人
176
-
177
- attachments: []
189
+ {attachments: attachmentFiles}
190
+
178
-
191
+ );
192
+
179
- }
193
+ }
180
-
181
- );
194
+
182
-
183
- }
195
+ }
196
+
197
+
198
+
199
+ }
184
200
 
185
201
  ```
186
202