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

質問編集履歴

2

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

2018/06/26 03:09

投稿

pee.cyon.cyon
pee.cyon.cyon

スコア12

title CHANGED
File without changes
body CHANGED
@@ -13,98 +13,70 @@
13
13
  ### 発生している問題・エラーメッセージ
14
14
 
15
15
  ```
16
+
17
+ 下記のソースコードは、別々の宛先に氏名・本文を差し込んで、同じフォルダーIDのPDF添付ファイル(同内容のもの)を
18
+ 一斉送信することが可能です。
19
+
20
+ 希望は、別々の宛先に氏名・本文を差し込んで、<別々のフォルダーID>のPDF添付ファイル(<別内容のもの>)を
16
- 最初の段階ある “関数の実行” も実行することません。
21
+ 差し込ん送信することなのすが、その方法がわかりません。
22
+ <別内容>の添付ファイルを差し込むにはどうしたらよいか、ご教示願えないでしょうか。
23
+
17
24
  ```
18
25
 
19
26
  ### 該当のソースコード
20
27
 
21
28
  ```ここに言語名を入力
22
- function sendMailWithAttachments(){
29
+ function send_mail(){
23
-
30
+
24
- /* スプレッドシートのシートを取得と準備 */
31
+ /* スプレッドシートのシートを取得と準備 */
25
- var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
32
+ var mySheet = SpreadsheetApp.getActiveSheet(); //シートを取得
26
33
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
27
34
 
28
35
  /* ドキュメントを取得する */
29
- var docTest=DocumentApp.openById("ドキュメントID"); //ドキュメントをIDで取得
36
+ var docTest=DocumentApp.openById("-----------"); //ドキュメントをIDで取得
30
37
  var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
31
38
 
32
- /* メール表題、fromアドレス、差出人名を準備 */
39
+ /* メール表題、fromアドレス、差出人名を準備 */
33
- var strSubject="●●●●(▼▼)"; //表題
40
+ var strSubject="テストタイトル"; //表題
34
- var strSender="■■■■"; //差出人
41
+ var strSender="名前"; //差出人
35
42
 
36
- /* シートの全ての行について社名、姓名を差し込みログに表示*/
37
- for(var i=2;i<=rowSheet;i++){
38
-
39
43
  /* シートの全ての行について社名、姓名を差し込みログに表示*/
40
44
  for(var i=2;i<=rowSheet;i++){
41
45
 
42
- var strSyokusyu=mySheet.getRange(i,1).getValue(); //
46
+ var strSyokusyu=mySheet.getRange(i,1).getValue();
43
- var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
47
+ var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); 
44
- var strSekininsha=mySheet.getRange(i,3).getValue(); //
48
+ var strSekininsha=mySheet.getRange(i,3).getValue(); 
45
- var strShimei=mySheet.getRange(i,4).getValue(); //
49
+ var strShimei=mySheet.getRange(i,4).getValue(); 
46
- var strFurigana=mySheet.getRange(i,5).getValue(); //
50
+ var strFurigana=mySheet.getRange(i,5).getValue();
47
- var strTo=mySheet.getRange(i,6).getValue(); //
51
+ var strTo=mySheet.getRange(i,6).getValue(); 
48
- var strCc=mySheet.getRange(i,7).getValue(); //
49
- var strfolder=mySheet.getRange(i,8).getValue(); //
52
+ var strfile=mySheet.getRange(i,7).getValue();
50
53
 
51
- var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{氏名}/,strShimei).replace(/{フリガナ}/,strFurigana); //社名、名を置換
54
+ var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{●●}/,strShimei).replace(/{●●}/,strFurigana); //社名、名を置換
52
55
 
56
+
53
57
  Logger.log(strBody); //ドキュメントの内容をログに表示
54
58
 
59
+ var folder=DriveApp.getFolderById('--------------');
60
+ var files=folder.getFiles();
61
+ var attachments=[];
62
+ while(files.hasNext()){
63
+ attachments.push(files.next());
64
+
65
+ }
55
66
 
56
- // 添付ファイル用の配列を作成
57
- var attachmentFiles =[];
58
-
59
- var arr = mySheet.getRange(2, 2, 4, 4).getValues();//
60
-
61
- //処理負荷軽減のためまとめてフォルダー情報を取得
62
-
63
- var folders = [
64
- DriveApp.getFolderById('添付1ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
65
- DriveApp.getFolderById('添付2ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
66
- DriveApp.getFolderById('添付3ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
67
- ];
68
-
69
-
70
- for(var i = 0, i= arr.length; i <1; i++){
71
-
72
- var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
73
-
74
- //添付ファイル1~3を取得(空白ならスキップ)
75
-
76
- if(arr[i][1] != ''){
77
- attachmentFiles.push(folders[0].getFilesByName(arr[i][1]).next());
78
- }
79
- if(arr[i][2] != ''){
80
- attachmentFiles.push(folders[1].getFilesByName(arr[i][2]).next());
81
- }
82
- if(arr[i][3] != ''){
83
- attachmentFiles.push(folders[2].getFilesByName(arr[i][3]).next());
84
- }
85
- }
86
-
87
- var strBody=strDoc
88
-
89
-
90
67
  GmailApp.sendEmail(
91
68
  strTo,
92
- strCc,
93
69
  strSubject,
94
70
  strBody,
95
- {attachments: attachmentFiles}
71
+ {attachments:attachments}
96
- );
72
+ );
97
73
  }
98
74
  }
99
75
 
100
- }
101
- ```
102
-
103
76
  ### 試したこと
104
77
 
105
- 添付ファイルを付けずに実行すれば、ドキュメントの本文に、氏名等を差し込んで
106
- Gmail送信することはきるのですが、添付ファイルをいざつけよう思うと
78
+ ドキュメントの本文、氏名等を差し込んで、同じ内容の添付ファイルを一斉送信するこは可能です。
107
- なかうくいきません。アドバイスをいただけますと幸いです。
79
+ 宛先ごとに個別の添付ファイルをつける方法が見つません。ご教示願えれば幸いです。
108
80
 
109
81
  ### 補足情報(FW/ツールのバージョンなど)
110
82
 

1

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

2018/06/26 03:09

投稿

pee.cyon.cyon
pee.cyon.cyon

スコア12

title CHANGED
File without changes
body CHANGED
@@ -21,32 +21,39 @@
21
21
  ```ここに言語名を入力
22
22
  function sendMailWithAttachments(){
23
23
 
24
- /* スプレッドシートのシートを取得と準備 */
24
+ /* スプレッドシートのシートを取得と準備 */
25
25
  var mySheet=SpreadsheetApp.getActiveSheet(); //シートを取得
26
26
  var rowSheet=mySheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
27
-
27
+
28
- /* ドキュメント「メール本文」を取得する */
28
+ /* ドキュメントを取得する */
29
- var docTest=DocumentApp.openById("-------------------"); //メール本文のドキュメントをIDで取得
29
+ var docTest=DocumentApp.openById("ドキュメントID"); //ドキュメントをIDで取得
30
- var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
30
+ var strDoc=docTest.getBody().getText(); //ドキュメントの内容を取得
31
31
 
32
- /* メール表題、fromアドレス、差出人名を準備 */
32
+ /* メール表題、fromアドレス、差出人名を準備 */
33
- var strSubject="●●●●(/{●●}/)"; //表題
33
+ var strSubject="●●●●(▼▼)"; //表題
34
- var strSender="▼▼▼"; //差出人
34
+ var strSender="■■■■"; //差出人
35
35
 
36
36
  /* シートの全ての行について社名、姓名を差し込みログに表示*/
37
37
  for(var i=2;i<=rowSheet;i++){
38
38
 
39
- var strSyokusyu=mySheet.getRange(i,1).getValue(); //
40
- var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
41
- var strSekininsha=mySheet.getRange(i,3).getValue(); //
42
- var strShimei=mySheet.getRange(i,4).getValue(); //
43
- var strFurigana=mySheet.getRange(i,5).getValue(); //
39
+ /* シートの全ての行について社名、姓名を差し込みログに表示*/
44
- var strTo=mySheet.getRange(i,6).getValue(); //toアドレス
40
+ for(var i=2;i<=rowSheet;i++){
45
-
46
- var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{●●}/,strShimei).replace(/{●●}/,strFurigana); //●●
47
41
 
48
-
42
+ var strSyokusyu=mySheet.getRange(i,1).getValue(); //
43
+ var strKarihaizokusaki=mySheet.getRange(i,2).getValue(); //
44
+ var strSekininsha=mySheet.getRange(i,3).getValue(); //
45
+ var strShimei=mySheet.getRange(i,4).getValue(); //
46
+ var strFurigana=mySheet.getRange(i,5).getValue(); //
47
+ var strTo=mySheet.getRange(i,6).getValue(); //
48
+ var strCc=mySheet.getRange(i,7).getValue(); //
49
+ var strfolder=mySheet.getRange(i,8).getValue(); //
50
+
51
+ var strBody=strDoc.replace(/{●●}/,strSyokusyu).replace(/{●●}/,strKarihaizokusaki).replace(/{●●}/,strSekininsha).replace(/{氏名}/,strShimei).replace(/{フリガナ}/,strFurigana); //社名、氏名を置換
52
+
53
+ Logger.log(strBody); //ドキュメントの内容をログに表示
54
+
55
+
49
- // 添付ファイル用の配列を作成
56
+ // 添付ファイル用の配列を作成
50
57
  var attachmentFiles =[];
51
58
 
52
59
  var arr = mySheet.getRange(2, 2, 4, 4).getValues();//
@@ -54,15 +61,15 @@
54
61
  //処理負荷軽減のためまとめてフォルダー情報を取得
55
62
 
56
63
  var folders = [
57
- DriveApp.getFolderById("添付1ファイルID"); //(添付1ファイル)のフォルダIDで取得
64
+ DriveApp.getFolderById('添付1ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
58
- DriveApp.getFolderById("添付2ファイルID"); //(添付2ファイル)のフォルダIDで取得
65
+ DriveApp.getFolderById('添付2ファイルのフォルダID'), //(添付1・・3ファイル)のフォルダIDは同一フォルダの中の同じID
59
- DriveApp.getFolderById("添付3ファイルID"); //(添付3ファイル)のフォルダIDで取得
66
+ DriveApp.getFolderById('添付3ファイルのフォルダID'), //(添付1・2・3ファイル)のフォルダIDは同一フォルダの中の同じID
60
67
  ];
61
68
 
62
69
 
63
- for(var i = 0, i= arr.length; i <1; i++){
70
+ for(var i = 0, i= arr.length; i <1; i++){
64
71
 
65
- var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
72
+ var strTo=arr[i][0].getValue().next(); //送付先メールアドレスを取得
66
73
 
67
74
  //添付ファイル1~3を取得(空白ならスキップ)
68
75
 
@@ -79,17 +86,18 @@
79
86
 
80
87
  var strBody=strDoc
81
88
 
82
- /* メールを送信 */
89
+
83
- GmailApp.sendEmail(
90
+ GmailApp.sendEmail(
84
- strTo, //toアドレス
91
+ strTo,
92
+ strCc,
85
- strSubject, //表題
93
+ strSubject,
86
- strBody, //本文
94
+ strBody,
87
- {
88
- name: strSender, //差出人
89
- attachments: []
95
+ {attachments: attachmentFiles}
96
+ );
90
- }
97
+ }
91
- );
92
- }
98
+ }
99
+
100
+ }
93
101
  ```
94
102
 
95
103
  ### 試したこと