質問編集履歴

2

コードの変更

2021/06/18 05:21

投稿

0799750
0799750

スコア2

test CHANGED
File without changes
test CHANGED
@@ -58,30 +58,6 @@
58
58
 
59
59
  ```ここに言語名を入力
60
60
 
61
- # -*- coding: utf-8 -*-
62
-
63
- """
64
-
65
- Created on Tue Jun 1 13:49:24 2021
66
-
67
-
68
-
69
- @author:
70
-
71
- """
72
-
73
-
74
-
75
- import openpyxl as px
76
-
77
- import win32com.client
78
-
79
- import glob
80
-
81
- import os
82
-
83
-
84
-
85
61
 
86
62
 
87
63
 
@@ -236,6 +212,32 @@
236
212
 
237
213
 
238
214
 
215
+ for i in range(len(sh1_values),1,len(sh2_values)):
216
+
217
+ if sh1_values==sh2_values:
218
+
219
+ attachment=sh1_values[i][4]
220
+
221
+ username=sh1_values[i][2]
222
+
223
+ mailaddress=sh1_values[i][3]
224
+
225
+
226
+
227
+ このコード使ってみたら
228
+
229
+
230
+
231
+ body=body.replace("{名前}",username)
232
+
233
+ NameError: name 'username' is not defined
234
+
235
+
236
+
237
+
238
+
239
+ このエラーが出ました。
240
+
239
241
 
240
242
 
241
243
 

1

コードの更新、タイトル変更

2021/06/18 05:21

投稿

0799750
0799750

スコア2

test CHANGED
@@ -1 +1 @@
1
- python リストから選択
1
+ python Trueの部分だけ実行させたい
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
  歴1か月です。
6
6
 
7
+ pythonを使用して
8
+
7
- pythonを使用してディレクトリ内ファイル取得し、Excelにあるメールからファイルを添付し、outlookで送信、を完成させたです。
9
+ ディレクトリ内に入ってきたファイルをエクセルのメールリストに基づ
10
+
11
+ メールを自動送信、まで実行をしたいです。
12
+
13
+
8
14
 
9
15
 
10
16
 
@@ -14,7 +20,7 @@
14
20
 
15
21
 
16
22
 
17
- 問題なく作成したのですが
23
+ は作成したのですが
18
24
 
19
25
 
20
26
 
@@ -22,7 +28,11 @@
22
28
 
23
29
 
24
30
 
31
+ の部分のコードで悩んでいます。
32
+
33
+ True Falseであってますか?
34
+
25
- 部分のコードを教えていただけまでしょうか
35
+ 部分のコードを教えていただきたいです。
26
36
 
27
37
 
28
38
 
@@ -76,101 +86,95 @@
76
86
 
77
87
 
78
88
 
79
- outlook=win32com.client.Dispatch("Outlook.Application")
89
+ outlook=win32com.client.Dispatch("Outlook.Application")#outlookを起動
80
-
90
+
81
- filepath='C:/Users/0794752/Desktop/お/メールリスト.xlsx'
91
+ filepath='C:/Users/0794752/Desktop/お/メールリスト.xlsx'#メールリストを読み込む
92
+
93
+
94
+
95
+
96
+
82
-
97
+ wb=px.load_workbook(filename=filepath)#filepathのExcelを読み込む
98
+
83
-
99
+ ws1=wb.worksheets[0]#ws1を「sheet1」に設定
100
+
84
-
101
+ ws2=wb.worksheets[1]#ws2を「sheet2」に設定
102
+
103
+
104
+
85
-
105
+ sh1_values=[[cell.value for cell in row]for row in ws1]#sheet1のデータを取得
106
+
86
-
107
+ sh2_values=[[cell.value for cell in row]for row in ws2]#sheet2のデータを取得
108
+
109
+
110
+
111
+
112
+
87
-
113
+ for i in range(1,len(sh1_values)):#sheet1のデータを1からlenまで繰り返す
114
+
88
-
115
+ attachment=sh1_values[i][4]#attachmentに[i行][4列目]のデータを入れる
116
+
117
+ username=sh1_values[i][2]#usernameに[i行][2列目]のデータを入れる
118
+
119
+ mailaddress=sh1_values[i][3]#mailadressに[i行][3列目]のデータを入れる
120
+
121
+ file=sh1_values[i][1]#fileに[i行][1列目]のデータを入れる
122
+
123
+
124
+
125
+ print(username)
126
+
127
+ print(mailaddress)
128
+
129
+ print(file)
130
+
131
+ print(attachment)
132
+
133
+
134
+
135
+ with open('C:/Users/0794752/Desktop/お/本文テキスト.txt',mode='r',encoding="utf-8_sig")as f:#テキストファイルを読み取る
136
+
137
+ body=f.read()
138
+
139
+
140
+
89
- files=glob.glob("C:/Users/0794752/Desktop/お/箱1/*")
141
+ files=glob.glob("C:/Users/0794752/Desktop/お/箱1/*")#箱1のフォルダ名読み込み
90
142
 
91
143
  for file in files:
92
144
 
93
- print(file)
145
+ print(file)
94
-
95
-
96
-
97
-
98
-
99
- wb=px.load_workbook(filename=filepath)
146
+
100
-
101
- ws1=wb.worksheets[0]
147
+
102
-
103
- ws2=wb.worksheets[1]
148
+
104
-
105
-
106
-
107
- sh1_values=[[cell.value for cell in row]for row in ws1]
108
-
109
- sh2_values=[[cell.value for cell in row]for row in ws2]
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
- for i in range(1,len(sh1_values)):
120
-
121
- attachment=sh1_values[i][4]
122
-
123
- username=sh1_values[i][2]
124
-
125
- mailaddress=sh1_values[i][3]
126
-
127
- file=sh1_values[i][1]
128
-
129
-
130
-
131
-
132
-
133
- print(username)
134
-
135
- print(mailaddress)
136
-
137
- print(file)
138
-
139
- print(attachment)
140
-
141
-
142
-
143
- with open('C:/Users/0794752/Desktop/お/本文テキスト.txt',mode='r',encoding="utf-8_sig")as f:
144
-
145
- body=f.read()
146
-
147
-
148
-
149
-
150
-
151
- with open('filepath','a')as f:
149
+ with open('filepath','a')as f:#fにfilepathの変数を取り込む
152
150
 
153
151
  print ('file',file=f)
154
152
 
155
153
 
156
154
 
157
-
158
-
155
+
156
+
157
+
158
+
159
- flag=False
159
+ flag=False#flagをFalseにリセット
160
-
160
+
161
- for j in range((1,len(sh2_values))):
161
+ for j in range(1,len(sh2_values)):#sheet2のattachmentをひとつずつ調べる
162
-
162
+
163
- if attachment==sh2_values[j][0]:
163
+ if attachment==sh2_values[j][0]:#もしattachmentが一致していれば
164
-
164
+
165
- flag=True
165
+ flag=True#flagをTrueに書き換える
166
-
166
+
167
- break
167
+ break#繰り返し処理を強制終了
168
-
169
-
170
-
171
-
172
-
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
176
+
173
- body=body.replace("{名前}",username)
177
+ body=body.replace("{名前}",username)#本文の{名前}をusernameを置換する
174
178
 
175
179
 
176
180
 
@@ -182,9 +186,9 @@
182
186
 
183
187
  mail.To=mailaddress
184
188
 
185
- mail.cc='自分'
189
+ mail.cc='じぶん'
186
-
190
+
187
- mail.Subject='未発送リストの件'
191
+ mail.Subject='てすと'
188
192
 
189
193
  mail.Body=body
190
194
 
@@ -192,19 +196,19 @@
192
196
 
193
197
 
194
198
 
195
- attachment = os.path.abspath(attachment)
199
+ attachment = os.path.abspath(attachment) #attachmentにフルパスを設定
196
-
200
+
197
- mail.Attachments.Add (attachment)
201
+ mail.Attachments.Add (attachment) #メールの添付ファイルにattachmentを追加
198
-
199
-
200
-
201
-
202
-
202
+
203
+
204
+
205
+
206
+
203
- mail.Display(0)
207
+ mail.Display(0) #メールの確認
204
-
208
+
205
- #mail.Send()
209
+ mail.Send() #メールを送る
206
-
210
+
207
- #print(f'{mailaddress}に[subject}を送信しました')
211
+ print(f'{mailaddress}に[subject}を送信しました')
208
212
 
209
213
 
210
214
 
@@ -216,6 +220,14 @@
216
220
 
217
221
 
218
222
 
223
+
224
+
225
+
226
+
227
+
228
+
229
+
230
+
219
231
  ```
220
232
 
221
233