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

質問編集履歴

4

違う質問を更新して投稿したため、解決済みの時点まで情報を戻した

2021/08/04 12:59

投稿

musshu
musshu

スコア3

title CHANGED
@@ -1,1 +1,1 @@
1
- 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、空白を無視して複数の添付ファイルを作成した
1
+ 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、エラーで送信できな
body CHANGED
@@ -6,7 +6,7 @@
6
6
  異なる宛先に異なる添付ファイルをつけて、メールを送信したいと思っています。
7
7
 
8
8
  ■スプレッドシートのイメージ
9
- A列(namae) B列(company) C列(address) D列(ichiran:ファイル名) E列以降:ichiran2~7
9
+ A列(namae) B列(company) C列(address) D列(ichiran:ファイル名)
10
10
 
11
11
  ■ドキュメントのイメージ
12
12
  ●●会社(B列より)
@@ -14,12 +14,8 @@
14
14
  いつもお世話になっております。~
15
15
 
16
16
  ### 発生している問題・エラーメッセージ
17
- Invalid argument: attachments
18
17
 
19
- 添付ファイルを呼び出したいのですが、宛先によってファイル数が違うため、空白を無視しないといけませんが、ifで空白を避けようとすると最初と最後のファイルしか添付されません。
20
- ifで繰り返すのがそもそも間違いだと思うのですが、他のサイトを見てもこれでできない理由もよくわかりません。
21
18
 
22
- またとても効率の悪い書き方をしていると思いますが、ご容赦ください。
23
19
 
24
20
  ### 該当のソースコード
25
21
 
@@ -58,59 +54,22 @@
58
54
 
59
55
  const ichiran = sheet.getRange(i, 4).getValue();
60
56
   
61
- const kijitsu = sheet.getRange(i, 5).getValue();
62
-
63
- const ichiran1 = sheet.getRange(i, 6).getValue();
64
-
65
- const ichiran2 = sheet.getRange(i, 7).getValue();
66
-
67
- const ichiran3 = sheet.getRange(i, 8).getValue();
68
57
 
69
- const ichiran4 = sheet.getRange(i, 9).getValue();
70
-
71
- const ichiran5 = sheet.getRange(i, 10).getValue();
72
-
73
- const ichiran6 = sheet.getRange(i, 11).getValue();
74
-
75
- const ichiran7 = sheet.getRange(i, 12).getValue();
76
-
77
-
78
-
79
-
80
-
81
58
  const body = docText
82
59
 
83
60
  .replace('{会社}',company)
84
61
 
85
62
  .replace('{名前}',namae)
86
63
 
87
- .replace('{期日}',kijitsu);
88
64
 
89
-
90
-
91
65
  var tempu = DriveApp.getFilesByName(ichiran).next();
92
- if(ichiran1 !='') {var tempu1 = DriveApp.getFilesByName(ichiran1).next();
93
- }
94
- if(ichiran2 !='') {var tempu2 = DriveApp.getFilesByName(ichiran2).next();
95
- }
96
- if(ichiran3 !='') {var tempu3 = DriveApp.getFilesByName(ichiran3).next();
97
- }
98
- if(ichiran4 !='') {var tempu4 = DriveApp.getFilesByName(ichiran4).next();
99
- }
100
- if(ichiran5 !='') {var tempu5 = DriveApp.getFilesByName(ichiran5).next();
101
- }
102
- if(ichiran6 !='') {var tempu6 = DriveApp.getFilesByName(ichiran6).next();
103
- }
104
- if(ichiran7 !='') {var tempu7 = DriveApp.getFilesByName(ichiran7).next();
105
- }
106
-
107
66
 
108
67
 
109
68
  GmailApp.sendEmail(address, subject, body, {
110
69
 
111
70
  cc: '@gmail.com',
112
71
 
113
- attachments: [tempu,tempu1,tempu2,tempu3,tempu4,tempu5,tempu6,tempu7]});
72
+ attachments: [tempu]});
114
73
 
115
74
  }
116
75
 
@@ -122,10 +81,9 @@
122
81
 
123
82
  ### 試したこと
124
83
 
125
- ifで空白を避ける条件でgetfilesByNameを命令するようにしてみました。
126
84
 
127
85
  ### 補足情報(FW/ツールのバージョンなど)
128
- ~~var tempu = DriveApp.getFilesByName(ichiran).next()
86
+ var tempu = DriveApp.getFilesByName(ichiran).next()
129
- ~~~~
87
+
130
88
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
131
- これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?~~
89
+ これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?

3

複数のファイルを送る機能を追加したいが、空白を無視できない

2021/08/04 12:59

投稿

musshu
musshu

スコア3

title CHANGED
File without changes
body CHANGED
@@ -126,6 +126,6 @@
126
126
 
127
127
  ### 補足情報(FW/ツールのバージョンなど)
128
128
  ~~var tempu = DriveApp.getFilesByName(ichiran).next()
129
-
129
+ ~~~~
130
130
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
131
131
  これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?~~

2

複数のファイルを送る機能を追加したいが、空白を無視できない

2021/08/04 11:23

投稿

musshu
musshu

スコア3

title CHANGED
@@ -1,1 +1,1 @@
1
- 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、「予期エラー」が表示される。
1
+ 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、空白を無視て複数の添付ファイルを作成した
body CHANGED
@@ -1,11 +1,12 @@
1
1
  ### 前提・実現したいこと
2
+ ※アドバイスありがとうございます。メールにファイルが添付されて、送信がされるところまでは解決できました。
2
3
 
3
4
  GAS初心者です。
4
5
  スプレッドシートに作成したリストと、ドキュメントに保存した文章を使って、
5
6
  異なる宛先に異なる添付ファイルをつけて、メールを送信したいと思っています。
6
7
 
7
8
  ■スプレッドシートのイメージ
8
- A列(namae) B列(company) C列(address) D列(ichiran:ファイルid)
9
+ A列(namae) B列(company) C列(address) D列(ichiran:ファイル) E列以降:ichiran2~7
9
10
 
10
11
  ■ドキュメントのイメージ
11
12
  ●●会社(B列より)
@@ -13,56 +14,118 @@
13
14
  いつもお世話になっております。~
14
15
 
15
16
  ### 発生している問題・エラーメッセージ
16
- ```
17
- 添付ファイルを呼び出したいのですが、その部分でエラーになっていると思われます。
17
+ Invalid argument: attachments
18
- どうしたら解決しますでしょうか?
19
18
 
20
- Exception: Unexpected error while getting the method or property getFileById on object DriveApp.
19
+ 添付ファイルを呼び出したいのですが、宛先によってファイル数が違うため、空白を無視しないといけませんが、ifで空白を避けようとすると最初と最後のファイルしか添付されません。
21
- sendMail @ コード.gs:24
20
+ ifで繰り返すのがそもそも間違いだと思うのですが、他のサイトを見てもこれでできない理由もよくわかりません。
22
- ```
23
21
 
22
+ またとても効率の悪い書き方をしていると思いますが、ご容赦ください。
23
+
24
24
  ### 該当のソースコード
25
25
 
26
26
  ```ここに言語名を入力
27
27
  function sendMail(){
28
28
 
29
+
30
+
29
31
  const sheet = SpreadsheetApp.getActiveSheet();
32
+
30
33
  const lastRow = sheet.getLastRow();;
34
+
31
35
 
36
+
32
- const DOC_URL = 'メールのurl';
37
+ const DOC_URL = 'メールの本文';
38
+
33
39
  const doc = DocumentApp.openByUrl(DOC_URL);
40
+
34
41
  const docText = doc.getBody().getText();
35
42
 
43
+
44
+
36
45
  const subject = 'タイトル';
37
46
 
38
- for(let i = 2; i <= lastRow; i++){
47
+
39
48
 
49
+ for(let i = 3; i <= lastRow; i++){
50
+
51
+
52
+
40
53
  const namae = sheet.getRange(i, 1).getValue(); 
54
+
41
55
  const company = sheet.getRange(i, 2).getValue();
56
+
42
57
  const address = sheet.getRange(i, 3).getValue();
43
- var ichiran = sheet.getRange(i, 4).getValue();
44
58
 
59
+ const ichiran = sheet.getRange(i, 4).getValue();
60
+  
61
+ const kijitsu = sheet.getRange(i, 5).getValue();
62
+
63
+ const ichiran1 = sheet.getRange(i, 6).getValue();
64
+
65
+ const ichiran2 = sheet.getRange(i, 7).getValue();
66
+
67
+ const ichiran3 = sheet.getRange(i, 8).getValue();
45
68
 
69
+ const ichiran4 = sheet.getRange(i, 9).getValue();
70
+
71
+ const ichiran5 = sheet.getRange(i, 10).getValue();
72
+
73
+ const ichiran6 = sheet.getRange(i, 11).getValue();
74
+
75
+ const ichiran7 = sheet.getRange(i, 12).getValue();
76
+
77
+
78
+
79
+
80
+
46
81
  const body = docText
82
+
47
83
  .replace('{会社}',company)
84
+
48
85
  .replace('{名前}',namae)
86
+
87
+ .replace('{期日}',kijitsu);
88
+
49
89
 
90
+
50
- var tempu = DriveApp.getFileById(ichiran).next()
91
+ var tempu = DriveApp.getFilesByName(ichiran).next();
51
-
92
+ if(ichiran1 !='') {var tempu1 = DriveApp.getFilesByName(ichiran1).next();
93
+ }
94
+ if(ichiran2 !='') {var tempu2 = DriveApp.getFilesByName(ichiran2).next();
95
+ }
96
+ if(ichiran3 !='') {var tempu3 = DriveApp.getFilesByName(ichiran3).next();
97
+ }
98
+ if(ichiran4 !='') {var tempu4 = DriveApp.getFilesByName(ichiran4).next();
99
+ }
100
+ if(ichiran5 !='') {var tempu5 = DriveApp.getFilesByName(ichiran5).next();
101
+ }
102
+ if(ichiran6 !='') {var tempu6 = DriveApp.getFilesByName(ichiran6).next();
103
+ }
104
+ if(ichiran7 !='') {var tempu7 = DriveApp.getFilesByName(ichiran7).next();
105
+ }
106
+
107
+
108
+
52
109
  GmailApp.sendEmail(address, subject, body, {
110
+
53
111
  cc: '@gmail.com',
112
+
54
- attachments: [tempu]});
113
+ attachments: [tempu,tempu1,tempu2,tempu3,tempu4,tempu5,tempu6,tempu7]});
114
+
55
115
  }
116
+
56
117
  }
118
+
119
+ }
120
+
57
121
  ```
58
122
 
59
123
  ### 試したこと
60
124
 
61
- idはシングルクォーテーションて、正しい箇所記載することができいると思いすが、
125
+ ifで空白る条件でgetfilesByName命令するようにしした。
62
- どうしてもエラーになってしまいます。
63
126
 
64
127
  ### 補足情報(FW/ツールのバージョンなど)
65
- var tempu = DriveApp.getFilesByName(ichiran).next()
128
+ ~~var tempu = DriveApp.getFilesByName(ichiran).next()
66
129
 
67
130
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
68
- これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?
131
+ これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?~~

1

ファイルが勝手にpdf変換される問題について追記

2021/08/04 10:58

投稿

musshu
musshu

スコア3

title CHANGED
File without changes
body CHANGED
@@ -62,5 +62,7 @@
62
62
  どうしてもエラーになってしまいます。
63
63
 
64
64
  ### 補足情報(FW/ツールのバージョンなど)
65
+ var tempu = DriveApp.getFilesByName(ichiran).next()
65
66
 
67
+ これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
66
- こにより詳細な情報を記載しくださ
68
+ れはどうやっ解決すればよのでしょうか?GASの仕様でしょうか?