Gmail API-trăn
Một phần quan trọng của lập trình là khả năng giao tiếp với các Giao diện lập trình ứng dụng (API) khác nhau. Nếu bạn truy cập Google API Explorer, bạn sẽ tìm thấy một thư viện API khổng lồ, bao gồm tất cả các ứng dụng nổi tiếng của họ như Gmail, Drive và Lịch. Nói một cách đơn giản, một API cho phép bạn tìm nạp hoặc gửi dữ liệu đến các dịch vụ thông qua các yêu cầu HTTP Show Việc sử dụng và tài liệu về các API này lúc đầu có thể hơi rắc rối, nhưng khi bạn học nó, bạn sẽ có thể áp dụng kiến thức của mình vào hầu hết các ứng dụng của Google Tôi quyết định viết hướng dẫn cho người mới bắt đầu về cách sử dụng và hiểu API Gmail. Hướng dẫn này dựa trên tài liệu, nghĩa là bạn sẽ tìm hiểu những gì cần tìm và cách đọc nó thay vì chỉ sao chép mã. Vì hầu hết các tài liệu tham khảo Google API khác đều giống nhau, bạn sẽ thấy rằng việc thích ứng với chúng sẽ dễ dàng hơn nhiều khi bạn biết cách đọc tài liệu thực sự. Điều này sẽ cho phép bạn viết mã của riêng mình và thực sự hiểu những gì bạn đang làm Python 3 được sử dụng trong hướng dẫn này, nhưng cách sử dụng cũng sẽ khá giống với các ngôn ngữ khác Bắt đầu nhanhGoogle thường cung cấp hướng dẫn bắt đầu nhanh để giúp ủy quyền dễ dàng hơn. Hướng dẫn này sẽ sử dụng ủy quyền từ hướng dẫn bắt đầu nhanh, có nghĩa là nó sẽ có một số hạn chế, nhưng nó đủ cho mục đích của chúng tôi. Một cách khác để lấy khóa API là tạo một dự án mới, cách này phức tạp hơn một chút Hướng dẫn bắt đầu nhanh Python có thể được truy cập tại liên kết này, nhưng tôi sẽ làm theo và chỉ cho bạn cách mọi thứ được thực hiện tại đây Đây là giao diện bắt đầu nhanh Bước đầu tiên là bật API và tải xuống thông tin đăng nhập để sử dụng trong dự án của chúng tôi. Bằng cách nhấn nút “kích hoạt API Gmail”, chúng tôi sẽ mở một cửa sổ mới với thông tin đăng nhập của mình ID khách hàng và Bí mật khách hàng của chúng tôi sẽ được hiển thị. Chọn cấu hình máy khách để tải xuống. Một tệp sẽ được lưu, có tên là Việc cài đặt các thư viện cần thiết được thực hiện bằng lệnh pip đơn giản do Google cung cấp. Tôi dán nó dưới đây là tốt. Tôi khuyên bạn nên làm điều đó trong một môi trường ảo. Tuy nhiên, điều đó không được đề cập trong hướng dẫn này pip install — upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib Lần chạy đầu tiên — Cho phép truy cậpTrước khi chúng tôi tiếp tục làm theo hướng dẫn, chúng tôi cần cấp quyền truy cập vào API Gmail cho tập lệnh của mình. Hãy bắt đầu bằng cách tạo kịch bản thực tế Tạo một. py trong thư mục dự án (giống như thư mục với Sao chép mã ví dụ từ khởi động nhanh Python vào tệp Chỉ cần chạy tệp như bình thường và bạn sẽ có thể đăng nhập vào tài khoản Google của mình trong trình duyệt web python gmail.py đăng nhập vào tài khoản của bạn. Một cảnh báo nói rằng ứng dụng chưa được xác minh sẽ được hiển thị. Vì chúng tôi đang sử dụng phương pháp bắt đầu nhanh nên ứng dụng của chúng tôi chưa được xác minh. Chỉ cần nhấp vào liên kết hiển thị trên hình ảnh để tiếp tục ngay bây giờ và cho phép truy cập Mã ví dụ thoạt nhìn có vẻ choáng ngợp, nhưng tôi sẽ chia nó thành các phần nhỏ hơn để giữ cho nó đơn giản. Cuối cùng, bạn sẽ thấy rằng nó thực sự không khó Nhập khẩu và phạm viNhư với bất kỳ tập lệnh Python nào khác, chúng tôi sẽ bắt đầu với việc nhập. Hầu hết các lần nhập được sử dụng để ủy quyền với tệp Tuy nhiên, phạm vi là phần quan trọng nhất. Biến này sẽ được sửa đổi sau, nhưng hiện tại, chúng tôi sẽ giải quyết phạm vi mặc định được cung cấp Điều này nói lên rằng nó sẽ cho phép chúng tôi truy cập dữ liệu từ phạm vi Sau này, chúng tôi sẽ thêm một phạm vi khác để sử dụng các chức năng khác thông tin đăng nhậpỦy quyền có lẽ là phần nâng cao nhất của tập lệnh. Hiện tại, chúng tôi sẽ không đi sâu vào vấn đề đó vì nó đã được định cấu hình để hoạt động ngay từ hộp Đây là phần lấy thông tin đăng nhập mà bạn đã tải xuống từ ________ 56 _______. Đầu tiên, nó tìm tệp python gmail.py 1. Đó là tệp được tạo sau khi bạn cho phép truy cập vào tài khoản của mình lần đầu tiên. Nếu tệp đã tồn tại, nó sẽ lấy thông tin xác thực từ tệp đó, nghĩa là bạn không phải cho phép truy cập nhiều lầnNếu tệp python gmail.py 1 không tồn tại, nó sẽ tải thông tin đăng nhập từ tệp credentials.json của bạn để thay thế. Điều này yêu cầu bạn cho phép truy cập qua trình duyệt web mà bạn đã làm trước đâyTrong cả hai trường hợp, thông tin đăng nhập đều được lưu trong biến python gmail.py 4 để sử dụng sau nàyAPIĐây là phần thú vị của kịch bản. Phần tìm nạp dữ liệu từ Gmail API. Như bạn có thể thấy, nó thực sự không quá cao cấp. Đây là phần mà chúng ta sẽ tìm hiểu sâu hơn python gmail.py 5 được xây dựng bằng cách sử dụng hàm python gmail.py 6 đã nhập trước đó. Thông tin đăng nhập mà chúng tôi nhận được trước đó được chuyển thành đối số cho nóSau đó, python gmail.py 5 được sử dụng để tìm nạp tất cả các nhãn Gmail cho tài khoản đã được ủy quyền. Dữ liệu được lưu vào biến python gmail.py 8Dòng cuối cùng lưu tất cả các nhãn vào biến python gmail.py 9. Chúng được định dạng dưới dạng danh sách, do đó giá trị mặc định ( https://www.googleapis.com/gmail/v1/users/userId/labels 0 ) được chỉ định nếu danh sách trốngPhần tiếp theo của hướng dẫn này sẽ xem xét tài liệu để hiểu ý nghĩa của điều này Kết quảCuối cùng, tên nhãn được in (nếu có) Hiểu tài liệuVì vậy, đó là mã ví dụ khởi động nhanh. Tuy nhiên, nó không có nhiều ý nghĩa nếu không đọc tài liệu. Phần này sẽ chỉ cho bạn cách thực sự hiểu những gì được viết trong mã và cách bạn sẽ sử dụng tài liệu để viết mã của riêng mình Trước tiên, hãy chuyển đến tab “Tham khảo” để truy cập tài liệu Ở bên trái, một menu tóm tắt lớn được hiển thị. Nó có rất nhiều thông tin, nhưng nó sẽ cực kỳ hữu ích trong bước sắp tới Khi chúng ta làm việc với nhãn, hãy chọn phần https://www.googleapis.com/gmail/v1/users/userId/labels 1 và phần https://www.googleapis.com/gmail/v1/users/userId/labels 2 để biết một số thông tin cơ bản về nhãnChúng tôi được chào đón bởi màn hình này Một văn bản nói rằng danh sách các phương pháp đó nằm ở cuối trang, cũng như các biểu diễn tài nguyên của nhãn. Thông tin thường được gửi dưới dạng JSON, được xử lý giống như từ điển trong Python Đây là thông tin mà mỗi nhãn chúng tôi tìm nạp nắm giữ. Nếu kéo xuống sâu hơn, chúng ta sẽ thấy một bảng cung cấp thông tin về từng thuộc tính trong từ điển Tôi đã đánh dấu phần tên vì chúng tôi đã sử dụng nó trước đây. Chúng tôi đã truy cập vào https://www.googleapis.com/gmail/v1/users/userId/labels 3 của nhãn khi chúng tôi in nhãn trước đó. Như thế nàyTrong trường hợp này, https://www.googleapis.com/gmail/v1/users/userId/labels 4 là một từ điển và chúng tôi truy cập thuộc tính https://www.googleapis.com/gmail/v1/users/userId/labels 3 bên trong nó. Chúng tôi có thể truy cập bất kỳ tài sản nào khác có tên ở trên, nhưng hiện tại, https://www.googleapis.com/gmail/v1/users/userId/labels 3 vẫn ổnĐiều quan trọng cần lưu ý là https://www.googleapis.com/gmail/v1/users/userId/labels 3 là một chuỗi, nhưng một số giá trị có thể là số nguyên. Dễ dàng tìm thấy trong tài liệuNếu chúng ta tiếp tục cuộn xuống cuối trang, chúng ta sẽ thấy tất cả các phương pháp. Một mô tả ngắn về từng phương pháp được trình bày, cũng như một siêu liên kết đến tài liệu Bạn sẽ sử dụng các phương pháp khác nhau tùy thuộc vào những gì bạn muốn làm. Ví dụ khởi động nhanh sử dụng phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 8 để tìm nạp tất cả các nhãn trên tài khoản Gmail. Nếu chúng tôi muốn tạo một nhãn mới, chúng tôi sẽ sử dụng phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 9, mà chúng tôi sẽ thực hiện sauNếu chúng ta quay lại đầu trang và nhìn vào phần tổng quan ở bên trái, bạn sẽ thấy rằng mỗi phương thức đều có nút menu riêng Phương pháp liệt kêHãy xem xét kỹ hơn phương pháp danh sách mà chúng ta đã sử dụng trước đây bằng cách nhấp vào https://www.googleapis.com/gmail/v1/users/userId/labels 8 trên thanh menuĐiều này cung cấp rất nhiều thông tin hữu ích. Đối với người mới bắt đầu, một yêu cầu HTTP GET được gửi tới URL nhãn để tìm nạp tất cả các nhãn https://www.googleapis.com/gmail/v1/users/userId/labels Chúng ta có thể thực hiện việc này theo cách thủ công bằng cách sử dụng thư viện list_of_labels = response["labels"] 1 trong Python chẳng hạn. Tuy nhiên, chúng tôi sẽ sử dụng thư viện Google cung cấp trong hướng dẫn nàyCần có sự cho phép, nhưng chúng tôi đã xử lý phần đó trước đó Và cuối cùng, nhưng không kém phần quan trọng, các tham số mà chúng ta có thể truyền cho phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 8. Như bạn có thể thấy, list_of_labels = response["labels"] 3 là người duy nhất chúng ta có thể vượt qualist_of_labels = response["labels"] 3 là một chuỗi đại diện cho địa chỉ email của người dùng. Thay vào đó, giá trị list_of_labels = response["labels"] 5 có thể được sử dụng để chỉ ra người dùng được xác thực. Chúng tôi thực sự đã sử dụng giá trị list_of_labels = response["labels"] 5 trong mã ví dụChúng ta sẽ sớm đi sâu hơn vào vấn đề này, nhưng trước tiên, chúng ta sẽ đọc qua các phần khác của tài liệu về phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 8Ủy quyền và phạm viPhạm vi nghe có vẻ quen thuộc, đó là bởi vì chúng tôi đã đề cập sơ qua về nó trước đó. Để truy cập phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 8, cần có ít nhất một trong các phạm vi được cung cấpNhư bạn có thể thấy, chúng tôi đã thêm phạm vi Phản ứngPhần cuối cùng cho chúng ta thấy một yêu cầu thành công sẽ trả về những gì. một nội dung ở định dạng JSON. Tất cả các nhãn được lưu trữ dưới dạng danh sách có thể được truy cập bằng phím python gmail.py 9. Về cơ bản điều nàylist_of_labels = response["labels"] Chính xác như bạn sẽ sử dụng một từ điển thông thường trong Python Yêu cầu lập danh sáchBây giờ, hãy nhìn lại phần API trong mã của chúng tôi vì chúng tôi đã thu thập thêm một số thông tin từ tài liệu Đầu tiên, python gmail.py 5 được xây dựng bằng thông tin đăng nhập của chúng tôi. Đây chỉ đơn giản là cơ sở được sử dụng để thực hiện các yêu cầu (sử dụng các phương thức mà chúng ta đã thấy trước đây)Tiếp theo, chúng tôi thực sự thực hiện yêu cầu bằng cách sử dụng phương thức danh sách với mã này. Bây giờ nó có thể trông quen thuộc hơn một chút khi chúng tôi đã xem qua các tài liệu Để dễ dàng chỉ cho bạn cách xây dựng cú pháp, tôi đã mã hóa mã màu cùng với menu để cho bạn thấy API hoạt động như thế nào Chúng tôi bắt đầu với biến python gmail.py 5. Chỉ cần làm theo cấu trúc giống như cây, từng phương pháp một, cuối cùng chúng ta sẽ có được phương pháp danh sáchThực sự chúng ta hãy xem xét kỹ hơn phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 8, và đặc biệt là tham số quen thuộc list_of_labels = response["labels"] 3 đã truyền ___22_______5 dưới dạng đối sốNếu cuộn ngược lên trên cùng của tài liệu phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 8, chúng ta sẽ thấy bản tóm tắt các tham số mà chúng ta đã đề cập trước đó. Tham số list_of_labels = response["labels"] 3 được chỉ định, trong trường hợp chúng tôi không biết nó là gìChúng tôi chỉ cần chuyển nó làm đối số cho phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 8 trong mãNhư bạn có thể nhớ lại, yêu cầu sẽ trả về một từ điển, theo phần phản hồi của tài liệu. Chúng tôi lưu trữ nó trong biến python gmail.py 8Để truy cập các nhãn, chúng tôi sử dụng phương pháp python gmail.py 9 ) và đối số thứ hai là những gì chúng ta nhận được nếu nó không tìm thấy bất kỳ thứ gì có tên đóNếu không có khóa tên là python gmail.py 9, một danh sách trống sẽ được trả vềVề cơ bản, đó là cách tài liệu được đọc và cách thức hoạt động của phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 8. Thay vào đó, hãy thử làm điều gì đó khác từ đầu bằng cách làm theo tài liệu APITạo nhãn mớiHãy sử dụng kiến thức mới tìm được của chúng ta và làm điều gì đó mới mẻ, điều gì đó từ đầu (gần như) Xóa tất cả mã liên quan đến API khỏi tài liệu của bạn. Chỉ giữ lại các lần nhập, phạm vi và xử lý thông tin xác thực. Chúng tôi sẽ cố gắng tạo nhãn mới thông qua API Hãy đến trang Tổng quan của các nhãn. Cuộn xuống các phương thức để xem chúng ta cần sử dụng phương thức nào để tạo phương thức của riêng mình Bạn có thể nhận thấy rằng có một phương pháp được gọi theo nghĩa đen là https://www.googleapis.com/gmail/v1/users/userId/labels 9 mà chúng ta sẽ sử dụng. Đi đến tài liệu của phương pháp đó để xem những gì chúng ta cầnHãy bắt đầu với ủy quyền và phạm vi Như bạn có thể thấy, chúng tôi yêu cầu ít nhất một trong ba phạm vi hiện có. Tuy nhiên, chúng tôi không có bất kỳ một trong số họ trong mã của chúng tôi. Hãy thêm phạm vi Biến Vì ủy quyền cũ đã được lưu trữ trong tệp python gmail.py 1 (và tệp đó được sử dụng để ủy quyền miễn là nó tồn tại), chúng tôi cần xóa nó và tạo lại nó với phạm vi mới của chúng tôiChạy lại ứng dụng Python với Một phụ thuộc mới được thêm vào. Bạn có thể không hiểu nó vì ngôn ngữ Thụy Điển, nhưng về cơ bản nó nói “Xử lý nhãn. ” Vì vậy, phạm vi mới đã thêm một phụ thuộc mới vào ứng dụng của chúng tôi Mật mãNếu chúng ta nhìn vào phần đầu của tài liệu phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 9, chúng ta có thể thấy rằng nó khá giống với phương pháp https://www.googleapis.com/gmail/v1/users/userId/labels 8. Nó yêu cầu ủy quyền, nó tạo một yêu cầu HTTP POST và cần có tham số list_of_labels = response["labels"] 3Nhưng bằng cách nào đó, chúng tôi cần chuyển nhãn thực tế trong yêu cầu của mình. Nếu chúng tôi cuộn xuống phần thân yêu cầu, chúng tôi sẽ xem cách thực hiện điều đó Trong phần nội dung yêu cầu của chúng tôi, phải có một nhãn có ít nhất các thuộc tính sau để tạo nhãn
Bạn có thể tìm hiểu xem chúng nên thuộc loại nào, cũng như chúng là gì, trong tài liệu Chính xác như chúng tôi đã nhận dữ liệu trong từ điển, dữ liệu sẽ được gửi dưới dạng từ điển Tạo nhãnĐây là một chức năng đơn giản để tạo nhãn. Nó yêu cầu một tên và hai đối số tùy chọn khác. Nếu chúng không được chỉ định, thì Nhãn được tạo dưới dạng từ điển, sau đó được trả lại Để tạo nhãn có tên Gửi yêu cầu tới APIĐã đến lúc thực hiện yêu cầu thực sự tới API và chuyển nhãn của chúng tôi tới tài khoản Gmail của chúng tôi. Hãy làm theo quy trình tương tự như lần trước Tôi đã đánh mã màu đường dẫn đến phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 9Chúng tôi không thay đổi nhiều so với lệnh gọi API cuối cùng của chúng tôi. Chúng tôi bắt đầu với python gmail.py 5 mà chúng tôi đã tạo trước đó và thêm từng phương thức cho đến khi chúng tôi đạt được phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 9. Tuy nhiên, chúng tôi chưa hoàn thành ở đóNếu chúng tôi cuộn đến phần Tham số của tài liệu, chúng tôi sẽ thấy rằng chúng tôi cần chuyển list_of_labels = response["labels"] 3 làm tham số, như cuộc gọi cuối cùng của chúng tôiHãy sử dụng lại list_of_labels = response["labels"] 5, giống như tài liệu gợi ýChúng tôi vẫn còn thiếu một cái gì đó. nhãn thực tế. Bằng cách nào đó, chúng tôi cũng cần chuyển nhãn trong yêu cầu của mình. Hãy cuộn xuống phần thân yêu cầu một lần nữa Chúng tôi đã tạo nhãn với tất cả các thuộc tính bắt buộc, vì vậy chúng tôi cần chuyển nhãn đó vào phần thân yêu cầu. Điều này được thực hiện bằng cách thêm một tham số khác vào phương thức https://www.googleapis.com/gmail/v1/users/userId/labels 9 có tên là gmail.py 1Hãy chuyển đối tượng https://www.googleapis.com/gmail/v1/users/userId/labels 4 của chúng ta vào đóCuộc gọi thực tế đã hoàn tất, nhưng để thêm một số kiểm tra lỗi, hãy gói nó vào một câu lệnh try/except Nếu xảy ra sự cố, thông báo lỗi sẽ được in trong bảng điều khiển của chúng tôi. Nếu mọi thứ diễn ra theo kế hoạch, Vì vậy, hãy nhìn lại các phần mã mà chúng tôi đã tạo để thực hiện yêu cầu API mới Việc xử lý API trên thực tế không quá khó. Quá trình tìm nạp thực tế không yêu cầu nhiều dòng mã — phần phức tạp là ủy quyền mà chúng tôi thậm chí không cần phải tự xử lý Nếu chúng tôi lưu và chạy mã với Chúng tôi đã thực hiện thành công lệnh gọi API tới Gmail từ đầu và tạo nhãn của riêng mình. Nguyên tắc cơ bản tương tự cũng áp dụng cho hầu hết các phương pháp khác trong API Gmail và các API Google khác Vui lòng thử thực hiện các yêu cầu khác chỉ để hiểu rõ về nó. Cách tốt nhất để học là thực hành. Khi bạn bắt đầu hiểu tài liệu, việc tạo cuộc gọi của riêng bạn không khó lắm Hãy thử tạo bản nháp thư của riêng bạn hoặc tìm nạp tất cả thư trong hộp thư đến của bạn dựa trên truy vấn — mọi thứ đều được chỉ định trong tài liệu Tôi đã cung cấp mã đầy đủ trên GitHub nếu bạn muốn xem kết quả cuối cùng của ví dụ của chúng tôi. Chúc may mắn với các dự án của bạn và viết mã vui vẻ Làm cách nào để sử dụng API Gmail với Python?Cấp phép thông tin đăng nhập cho ứng dụng dành cho máy tính để bàn . Trong bảng điều khiển Google Cloud, đi tới Trình đơn menu > API & Dịch vụ > Thông tin xác thực. . Nhấp vào Tạo thông tin xác thực > ID ứng dụng khách OAuth Nhấp vào Loại ứng dụng > Ứng dụng trên máy tính để bàn Trong trường Tên, hãy nhập tên cho thông tin xác thực. . Nhấp vào Tạo. . Nhấp vào OK Google Gmail API có miễn phí không?API Gmail được cung cấp miễn phí nhưng có giới hạn sử dụng hàng ngày nhất định đối với lệnh gọi API. sử dụng hàng ngày. 1 tỷ lệnh gọi API mỗi ngày. Giới hạn tỷ lệ cho mỗi người dùng. 250 lệnh gọi API mỗi người dùng mỗi giây.
Làm cách nào để tự động hóa Gmail bằng Python?Mục lục . Bật xác minh 2 bước Gửi Email bằng Python. - Nhập thư viện và đặt người gửi và người nhận email. - Đặt chủ đề và nội dung của email. - Thêm SSL. - Đăng nhập và gửi email Lên lịch cho Python Script chạy hàng tháng, hàng tuần hoặc hàng ngày Có API cho Gmail không?API Gmail là API RESTful có thể được sử dụng để truy cập hộp thư Gmail và gửi thư . Đối với hầu hết các ứng dụng web, API Gmail là lựa chọn tốt nhất để có quyền truy cập được phép vào dữ liệu Gmail của người dùng và phù hợp với nhiều ứng dụng khác nhau, chẳng hạn như. Trích xuất, lập chỉ mục và sao lưu thư chỉ đọc. |