質問編集履歴

4

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

2021/08/04 12:59

投稿

musshu
musshu

スコア3

test CHANGED
@@ -1 +1 @@
1
- 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、空白を無視して複数の添付ファイルを作成した
1
+ 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、エラーで送信できな
test CHANGED
@@ -14,7 +14,7 @@
14
14
 
15
15
  ■スプレッドシートのイメージ
16
16
 
17
- A列(namae) B列(company) C列(address) D列(ichiran:ファイル名) E列以降:ichiran2~7
17
+ A列(namae) B列(company) C列(address) D列(ichiran:ファイル名)
18
18
 
19
19
 
20
20
 
@@ -30,17 +30,9 @@
30
30
 
31
31
  ### 発生している問題・エラーメッセージ
32
32
 
33
- Invalid argument: attachments
34
33
 
35
34
 
36
35
 
37
- 添付ファイルを呼び出したいのですが、宛先によってファイル数が違うため、空白を無視しないといけませんが、ifで空白を避けようとすると最初と最後のファイルしか添付されません。
38
-
39
- ifで繰り返すのがそもそも間違いだと思うのですが、他のサイトを見てもこれでできない理由もよくわかりません。
40
-
41
-
42
-
43
- またとても効率の悪い書き方をしていると思いますが、ご容赦ください。
44
36
 
45
37
 
46
38
 
@@ -118,45 +110,7 @@
118
110
 
119
111
   
120
112
 
121
- const kijitsu = sheet.getRange(i, 5).getValue();
122
-
123
-
124
-
125
- const ichiran1 = sheet.getRange(i, 6).getValue();
126
-
127
-
128
-
129
- const ichiran2 = sheet.getRange(i, 7).getValue();
130
-
131
-
132
-
133
- const ichiran3 = sheet.getRange(i, 8).getValue();
134
-
135
113
 
136
-
137
- const ichiran4 = sheet.getRange(i, 9).getValue();
138
-
139
-
140
-
141
- const ichiran5 = sheet.getRange(i, 10).getValue();
142
-
143
-
144
-
145
- const ichiran6 = sheet.getRange(i, 11).getValue();
146
-
147
-
148
-
149
- const ichiran7 = sheet.getRange(i, 12).getValue();
150
-
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
114
 
161
115
  const body = docText
162
116
 
@@ -170,45 +124,9 @@
170
124
 
171
125
 
172
126
 
173
- .replace('{期日}',kijitsu);
174
-
175
-
176
-
177
-
178
-
179
127
 
180
128
 
181
129
  var tempu = DriveApp.getFilesByName(ichiran).next();
182
-
183
- if(ichiran1 !='') {var tempu1 = DriveApp.getFilesByName(ichiran1).next();
184
-
185
- }
186
-
187
- if(ichiran2 !='') {var tempu2 = DriveApp.getFilesByName(ichiran2).next();
188
-
189
- }
190
-
191
- if(ichiran3 !='') {var tempu3 = DriveApp.getFilesByName(ichiran3).next();
192
-
193
- }
194
-
195
- if(ichiran4 !='') {var tempu4 = DriveApp.getFilesByName(ichiran4).next();
196
-
197
- }
198
-
199
- if(ichiran5 !='') {var tempu5 = DriveApp.getFilesByName(ichiran5).next();
200
-
201
- }
202
-
203
- if(ichiran6 !='') {var tempu6 = DriveApp.getFilesByName(ichiran6).next();
204
-
205
- }
206
-
207
- if(ichiran7 !='') {var tempu7 = DriveApp.getFilesByName(ichiran7).next();
208
-
209
- }
210
-
211
-
212
130
 
213
131
 
214
132
 
@@ -222,7 +140,7 @@
222
140
 
223
141
 
224
142
 
225
- attachments: [tempu,tempu1,tempu2,tempu3,tempu4,tempu5,tempu6,tempu7]});
143
+ attachments: [tempu]});
226
144
 
227
145
 
228
146
 
@@ -246,16 +164,14 @@
246
164
 
247
165
 
248
166
 
249
- ifで空白を避ける条件でgetfilesByNameを命令するようにしてみました。
250
-
251
167
 
252
168
 
253
169
  ### 補足情報(FW/ツールのバージョンなど)
254
170
 
255
- ~~var tempu = DriveApp.getFilesByName(ichiran).next()
171
+ var tempu = DriveApp.getFilesByName(ichiran).next()
256
172
 
257
- ~~~~
173
+
258
174
 
259
175
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
260
176
 
261
- これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?~~
177
+ これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?

3

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

2021/08/04 12:59

投稿

musshu
musshu

スコア3

test CHANGED
File without changes
test CHANGED
@@ -254,7 +254,7 @@
254
254
 
255
255
  ~~var tempu = DriveApp.getFilesByName(ichiran).next()
256
256
 
257
-
257
+ ~~~~
258
258
 
259
259
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
260
260
 

2

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

2021/08/04 11:23

投稿

musshu
musshu

スコア3

test CHANGED
@@ -1 +1 @@
1
- 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、「予期エラー」が表示される。
1
+ 【GAS】異なる添付ファイルを呼び出してメール送信をしたいが、空白を無視て複数の添付ファイルを作成した
test CHANGED
@@ -1,5 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ ※アドバイスありがとうございます。メールにファイルが添付されて、送信がされるところまでは解決できました。
4
+
3
5
 
4
6
 
5
7
  GAS初心者です。
@@ -12,7 +14,7 @@
12
14
 
13
15
  ■スプレッドシートのイメージ
14
16
 
15
- A列(namae) B列(company) C列(address) D列(ichiran:ファイルid)
17
+ A列(namae) B列(company) C列(address) D列(ichiran:ファイル名) E列以降:ichiran2~7
16
18
 
17
19
 
18
20
 
@@ -28,108 +30,232 @@
28
30
 
29
31
  ### 発生している問題・エラーメッセージ
30
32
 
33
+ Invalid argument: attachments
34
+
35
+
36
+
37
+ 添付ファイルを呼び出したいのですが、宛先によってファイル数が違うため、空白を無視しないといけませんが、ifで空白を避けようとすると最初と最後のファイルしか添付されません。
38
+
39
+ ifで繰り返すのがそもそも間違いだと思うのですが、他のサイトを見てもこれでできない理由もよくわかりません。
40
+
41
+
42
+
43
+ またとても効率の悪い書き方をしていると思いますが、ご容赦ください。
44
+
45
+
46
+
47
+ ### 該当のソースコード
48
+
49
+
50
+
51
+ ```ここに言語名を入力
52
+
53
+ function sendMail(){
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+ const sheet = SpreadsheetApp.getActiveSheet();
62
+
63
+
64
+
65
+ const lastRow = sheet.getLastRow();;
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+ const DOC_URL = 'メールの本文';
74
+
75
+
76
+
77
+ const doc = DocumentApp.openByUrl(DOC_URL);
78
+
79
+
80
+
81
+ const docText = doc.getBody().getText();
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+ const subject = 'タイトル';
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+ for(let i = 3; i <= lastRow; i++){
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+ const namae = sheet.getRange(i, 1).getValue(); 
106
+
107
+
108
+
109
+ const company = sheet.getRange(i, 2).getValue();
110
+
111
+
112
+
113
+ const address = sheet.getRange(i, 3).getValue();
114
+
115
+
116
+
117
+ const ichiran = sheet.getRange(i, 4).getValue();
118
+
119
+  
120
+
121
+ const kijitsu = sheet.getRange(i, 5).getValue();
122
+
123
+
124
+
125
+ const ichiran1 = sheet.getRange(i, 6).getValue();
126
+
127
+
128
+
129
+ const ichiran2 = sheet.getRange(i, 7).getValue();
130
+
131
+
132
+
133
+ const ichiran3 = sheet.getRange(i, 8).getValue();
134
+
135
+
136
+
137
+ const ichiran4 = sheet.getRange(i, 9).getValue();
138
+
139
+
140
+
141
+ const ichiran5 = sheet.getRange(i, 10).getValue();
142
+
143
+
144
+
145
+ const ichiran6 = sheet.getRange(i, 11).getValue();
146
+
147
+
148
+
149
+ const ichiran7 = sheet.getRange(i, 12).getValue();
150
+
151
+
152
+
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+ const body = docText
162
+
163
+
164
+
165
+ .replace('{会社}',company)
166
+
167
+
168
+
169
+ .replace('{名前}',namae)
170
+
171
+
172
+
173
+ .replace('{期日}',kijitsu);
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+ var tempu = DriveApp.getFilesByName(ichiran).next();
182
+
183
+ if(ichiran1 !='') {var tempu1 = DriveApp.getFilesByName(ichiran1).next();
184
+
185
+ }
186
+
187
+ if(ichiran2 !='') {var tempu2 = DriveApp.getFilesByName(ichiran2).next();
188
+
189
+ }
190
+
191
+ if(ichiran3 !='') {var tempu3 = DriveApp.getFilesByName(ichiran3).next();
192
+
193
+ }
194
+
195
+ if(ichiran4 !='') {var tempu4 = DriveApp.getFilesByName(ichiran4).next();
196
+
197
+ }
198
+
199
+ if(ichiran5 !='') {var tempu5 = DriveApp.getFilesByName(ichiran5).next();
200
+
201
+ }
202
+
203
+ if(ichiran6 !='') {var tempu6 = DriveApp.getFilesByName(ichiran6).next();
204
+
205
+ }
206
+
207
+ if(ichiran7 !='') {var tempu7 = DriveApp.getFilesByName(ichiran7).next();
208
+
209
+ }
210
+
211
+
212
+
213
+
214
+
215
+
216
+
217
+ GmailApp.sendEmail(address, subject, body, {
218
+
219
+
220
+
221
+ cc: '@gmail.com',
222
+
223
+
224
+
225
+ attachments: [tempu,tempu1,tempu2,tempu3,tempu4,tempu5,tempu6,tempu7]});
226
+
227
+
228
+
229
+ }
230
+
231
+
232
+
233
+ }
234
+
235
+
236
+
237
+ }
238
+
239
+
240
+
31
241
  ```
32
242
 
33
- 添付ファイルを呼び出したいのですが、その部分でエラーになっていると思われます。
34
-
35
- どうしたら解決しますでしょうか?
36
-
37
-
38
-
39
- Exception: Unexpected error while getting the method or property getFileById on object DriveApp.
40
-
41
- sendMail @ コード.gs:24
42
-
43
- ```
44
-
45
-
46
-
47
- ### 該当のソースコード
48
-
49
-
50
-
51
- ```ここに言語名を入力
52
-
53
- function sendMail(){
54
-
55
-
56
-
57
- const sheet = SpreadsheetApp.getActiveSheet();
58
-
59
- const lastRow = sheet.getLastRow();;
60
-
61
-
62
-
63
- const DOC_URL = 'メールのurl';
64
-
65
- const doc = DocumentApp.openByUrl(DOC_URL);
66
-
67
- const docText = doc.getBody().getText();
68
-
69
-
70
-
71
- const subject = 'タイトル';
72
-
73
-
74
-
75
- for(let i = 2; i <= lastRow; i++){
76
-
77
-
78
-
79
- const namae = sheet.getRange(i, 1).getValue(); 
80
-
81
- const company = sheet.getRange(i, 2).getValue();
82
-
83
- const address = sheet.getRange(i, 3).getValue();
84
-
85
- var ichiran = sheet.getRange(i, 4).getValue();
86
-
87
-
88
-
89
-
90
-
91
- const body = docText
92
-
93
- .replace('{会社}',company)
94
-
95
- .replace('{名前}',namae)
96
-
97
-
98
-
99
- var tempu = DriveApp.getFileById(ichiran).next()
100
-
101
-
102
-
103
- GmailApp.sendEmail(address, subject, body, {
104
-
105
- cc: '@gmail.com',
106
-
107
- attachments: [tempu]});
108
-
109
- }
110
-
111
- }
112
-
113
- ```
114
-
115
243
 
116
244
 
117
245
  ### 試したこと
118
246
 
119
247
 
120
248
 
121
- idはシングルクォーテーションて、正しい箇所記載することができいると思いすが、
249
+ ifで空白る条件でgetfilesByName命令するようにしした。
122
-
123
- どうしてもエラーになってしまいます。
124
250
 
125
251
 
126
252
 
127
253
  ### 補足情報(FW/ツールのバージョンなど)
128
254
 
129
- var tempu = DriveApp.getFilesByName(ichiran).next()
255
+ ~~var tempu = DriveApp.getFilesByName(ichiran).next()
130
256
 
131
257
 
132
258
 
133
259
  これで指示すると動いたのですが、指定したファイルが勝手にpdf変換される事象が発生しております。
134
260
 
135
- これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?
261
+ これはどうやって解決すればよいのでしょうか?GASの仕様でしょうか?~~

1

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

2021/08/04 10:58

投稿

musshu
musshu

スコア3

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