Προγραμματισμός

Πώς να στείλετε email από το R και το Gmail

Σε κάποιο σημείο της ζωής σας R, πιθανότατα θα θέλετε να μοιραστείτε τα αποτελέσματα της ανάλυσής σας με συναδέλφους που δεν χρησιμοποιούν R. Υπάρχουν πολλοί τρόποι για να το κάνετε αυτό. Ένα από τα πιο εύκολα (και λιγότερο ακριβά) είναι η αποστολή των αποτελεσμάτων μέσω email.

Ωστόσο, είναι λυπηρό να αυτοματοποιείτε ολόκληρη τη ροή εργασιών ανάλυσής σας, μόνο για τη χειροκίνητη δημιουργία και αποστολή email στο τέλος. Ευτυχώς, δεν χρειάζεται. Υπάρχουν πολλά πακέτα R που σας επιτρέπουν να στέλνετε email απευθείας από ένα σενάριο R. Σε αυτό το άρθρο, θα παρουσιάσω ένα από αυτά: gmailr από τον Jim Hester, ο οποίος είναι τώρα μηχανικός λογισμικού στο RStudio.

Προφανώς, θα χρειαστείτε έναν λογαριασμό Gmail, ο οποίος είναι ελεύθερος να ρυθμιστεί εάν δεν έχετε. Στη συνέχεια, για να μπορέσετε να χρησιμοποιήσετε αυτόν τον λογαριασμό από το R, θα πρέπει να τον ρυθμίσετε για πρόσβαση στο API. Δείτε πώς.

Μεταβείτε στη διεύθυνση console.developers.google.com (ναι, αυτός είναι ένας υπο-υποτομέας). Εάν δεν έχετε ήδη ένα έργο προγραμματιστή, θα σας ζητηθεί να δημιουργήσετε ένα.

Στο επάνω μέρος του πίνακα ελέγχου, θα πρέπει να δείτε την επιλογή "Ενεργοποίηση API και υπηρεσιών". Κάντε κλικ σε αυτό.

Sharon Machlis,

Στη συνέχεια θα θέλετε να αναζητήσετε το Gmail API. Κάντε κλικ σε αυτό και, στη συνέχεια, κάντε κλικ στην επιλογή Ενεργοποίηση.

Το σενάριο R θα χρειαστεί διαπιστευτήρια, οπότε κάντε κλικ στην επιλογή Δημιουργία διαπιστευτηρίων επάνω δεξιά.

Sharon Machlis

Σύμφωνα με τις οδηγίες του Jim Hester, χρειαζόμαστε ένα αναγνωριστικό πελάτη, επομένως θα επιλέξω το αναγνωριστικό πελάτη.

Sharon Machlis,

Τώρα ζητάει έναν τύπο αίτησης. Επειδή το "R script" δεν είναι εδώ, θέλω να επιλέξω "Άλλο". Αλλά όλα τα κουμπιά επιλογής είναι γκριζαρισμένα. Αυτό συμβαίνει επειδή δεν έχω διαμορφώσει την οθόνη συναίνεσης. Αυτό είναι εύκολο να το χάσετε εάν εστιάζετε στις επιλογές κουμπιών επιλογής. είναι πάνω δεξιά. Κάντε κλικ σε αυτό.

Sharon Machlis,

Η διεύθυνση email σας θα πρέπει να είναι ήδη στη μορφή συγκατάθεσης-οθόνης. Η μόνη άλλη απαίτηση είναι ένα όνομα για την εφαρμογή. Μπορείτε να το ονομάσετε οτιδήποτε θέλετε.

Ο Jim λέει ότι οι υπόλοιπες προεπιλογές είναι εντάξει, οπότε μετακινηθείτε προς τα κάτω και αποθηκεύστε. Τώρα θα πρέπει να μπορείτε να επιλέξετε Τύπος εφαρμογής Άλλο, να δώσετε ένα όνομα στην εφαρμογή και να κάνετε κλικ στο Δημιουργία.

Η κονσόλα θα πρέπει στη συνέχεια να σας δώσει ένα αναγνωριστικό πελάτη και ένα μυστικό πελάτη. Μπορείτε να τα χρησιμοποιήσετε προσθέτοντάς τα στο περιβάλλον R εάν θέλετε. Αλλά ο Jim προτείνει τη λήψη του αρχείου JSON. Μπορείτε να το κατεβάσετε στον κατάλογο εργασίας του έργου R και να θυμηθείτε το όνομα αρχείου που του δίνετε.

Sharon Machlis,

Αυτό ολοκληρώνει τη ρύθμιση από την πλευρά του Google και είναι τελικά η ώρα για κάποιο κώδικα R.

Αρχικά, βεβαιωθείτε ότι έχετε εγκαταστήσει το πακέτο gmailr. Είναι διαθέσιμο στο CRAN, οπότε μπορείτε να το εγκαταστήσετε με install.packages ("gmailr"). Στη συνέχεια, φορτώστε το πακέτο στο σενάριό σας με βιβλιοθήκη (gmailr).

Πριν κάνετε οτιδήποτε άλλο, θα θέλατε να ρυθμίσετε την περίοδο λειτουργίας R για να χρησιμοποιήσετε το αρχείο διαπιστευτηρίων JSON που έχετε κατεβάσει. Μπορείτε να το κάνετε με το use_secret_file () συνάρτηση και το όνομα του αρχείου JSON ως όρισμα. Εάν κάλεσα το αρχείο διαπιστευτηρίων JSON DoMoreWithR.json, η εντολή θα ήταν

use_secret_file ("DoMoreWithR.json")

Στην πραγματικότητα η αποστολή ενός μηνύματος είναι αρκετά εύκολη.

Για ορισμένα δείγματα δεδομένων, έκανα λήψη μηνιαίων ποσοστών ανεργίας στις ΗΠΑ και έπειτα δημιούργησα μια συμβολοσειρά κειμένου που ονομάζεται latest_msg με πληροφορίες σχετικά με το τελευταίο ποσοστό ανεργίας. Σημειώστε ότι στον παρακάτω κώδικα χρησιμοποιώ το πακέτο κόλλας για να συγκεντρώσω τη συμβολοσειρά χαρακτήρων που θέλω για το μήνυμά μου, αλλά αυτό γιατί μου αρέσει να το κάνω έτσι. Επικόλληση() ή επικόλληση0 () λειτουργούν εξίσου καλά.

Μπορείτε να χρησιμοποιήσετε οποιαδήποτε δεδομένα που δημιουργούνται από R που θέλετε στο μήνυμά σας ηλεκτρονικού ταχυδρομείου. Εάν θέλετε να ακολουθήσετε το δικό μου, εδώ είναι ο κωδικός (θα χρειαστείτε το πακέτο pacman εγκατεστημένο):

pacman :: p_load (quantmod, κόλλα, xts, dplyr, ggplot2)
getSymbols ("UNRATE", src = "FRED")

ανεργία <- coredata (UNRATE)

month_starting <- ευρετήριο (UNRATE)

series_length <- μήκος (ανεργία)

latest_msg <- glue ("Το πιο πρόσφατο ποσοστό ανεργίας στις ΗΠΑ ήταν {ανεργία [σειρά_length]}, τον μήνα που ξεκινάει {month_starting [series_length]}. Αυτό είναι {ανεργία [series_length] - ανεργία [series_length - 1]} διαφορά ποσοστιαίων μονάδων από την προηγούμενη μήνας.")

Στη συνέχεια, θέλω να δημιουργήσω ένα αντικείμενο email MIME και, στη συνέχεια, να προσθέσω ένα στη διεύθυνση, μια διεύθυνση από, το θέμα του κειμένου και το σώμα των μηνυμάτων μου.

my_email_message%

στο ("[email protected]")%>%

από ("[email protected]")%>%

θέμα ("Το δοκιμαστικό μου μήνυμα")%>%

text_body (τελευταία_msg)

Εάν το κάνετε αυτό και, στη συνέχεια, ελέγξτε τη δομή του my_email_message με str (my_text_message) θα δείτε ότι είναι μια λίστα με μια κατηγορία μίμος.

Αφού δημιουργήσετε το αντικείμενο μηνυμάτων MIME, μπορείτε να το στείλετε με το να στείλετε μήνυμα() λειτουργία. Το επιχείρημα είναι απλώς το όνομα του αντικειμένου MIME μου, στην περίπτωση αυτή my_email_message. Έτσι, η πλήρης εντολή σε αυτήν την περίπτωση είναι

send_message (my_email_message)

Όταν εκτελείτε το send_message () για πρώτη φορά, πιθανότατα θα ερωτηθείτε εάν θέλετε να αποθηκεύσετε προσωρινά την εξουσιοδότηση μεταξύ των περιόδων R. Σας προτείνω να πείτε ναι. Την πρώτη φορά που θα το εκτελέσετε, θα σας ζητηθεί επίσης από το πρόγραμμα περιήγησής σας να εξουσιοδοτήσετε το σενάριο R να χρησιμοποιεί τον λογαριασμό σας Google.

Υπάρχουν περισσότερα που μπορείτε να κάνετε με το gmailr. Μια επιλογή είναι να δημιουργήσετε ένα μήνυμα HTML, ώστε να μπορείτε να χρησιμοποιήσετε σήμανση όπως έντονη και πλάγια γραφή.

Εδώ το σώμα των μηνυμάτων μου περιλαμβάνει σημάδια παραγράφου τύπου HTML και έντονη και πλάγια γραφή και θα το στείλω στη διεύθυνση εργασίας μου.

html_msg_text <- κόλλα ("

Το τελευταίο ποσοστό ανεργίας στις ΗΠΑ ήταν

{ανεργία [series_length]}, τον μήνα που ξεκινά

{month_starting [series_length]}. Αυτό είναι

{ανεργία [series_length] - ανεργία [series_length - 1]}

ποσοστιαίες μονάδες διαφορά από τον προηγούμενο μήνα.

Δεδομένα από το Γραφείο Στατιστικής Εργασίας των Η.Π.Α.

")
my_html_message%

στο ("[email protected]")%>%

από ("[email protected]")%>%

θέμα ("Το δοκιμαστικό μου μήνυμα")%>%

html_body (html_msg_text)

send_message (my_html_message)

Δυστυχώς, δεν ξέρω έναν τρόπο να συμπεριλάβω εύκολα μια εικόνα που δημιουργείται από το R απευθείας στο σώμα μηνυμάτων. Αλλά είναι πολύ απλό να συμπεριλάβετε ένα ως συνημμένο.

Στην κορυφή του σεναρίου παρακάτω, μετατρέπω τα δεδομένα του ποσοστού ανεργίας μου σε πλαίσιο δεδομένων με μετρήσεις από το 2000 και αργότερα, οπότε μπορώ να χρησιμοποιήσω το ggplot για να το γράφω και, στη συνέχεια, να αποθηκεύσω το γράφημα σε ένα αρχείο.

Αυτό το επόμενο μέρος του κώδικα είναι αυτό που είναι σημαντικό να γνωρίζετε για το ηλεκτρονικό ταχυδρομείο. Πρώτον, όπως και πριν, δημιουργώ μια συμβολοσειρά κειμένου για το κείμενο του μηνύματός μου με το πακέτο κόλλας. Αυτό που είναι νέο είναι οι δύο τελευταίες γραμμές κώδικα που δημιουργούν το αντικείμενο MIME μου. Αυτή η τελευταία γραμμή, επισυνάψετε το αρχείο(), επισυνάπτει το αρχείο PNG στο email. Η προηγούμενη γραμμή είναι σημαντική αν θέλετε να εμφανίζεται κείμενο στο κύριο μέρος του email. Χωρίς τη χρήση και των δύο text_body ()καιεπισύναψη_μερών () για το κύριο κείμενο, το κείμενο δεν θα εμφανίζεται όταν επισυνάπτετε ένα αρχείο. Απλώς κάτι που πρέπει να θυμάστε.

Τότε μπορώ να χρησιμοποιήσω το ίδιο να στείλετε μήνυμα() λειτουργία για να το στείλετε.

un_df%

φίλτρο (month_starting> = as.Date ("2000-01-01"))%>%

μετονομασία (ανεργία = ΑΝΑΜΟΝΗ)

mygraph <- ggplot (un_df, aes (έναρξη_μηνου, ανεργία)) +

geom_line () +

ggtitle ("Μηνιαία ανεργία στις ΗΠΑ") +

xlab ("Έναρξη μήνα") +

ylab ("")

ggsave ("ανεργία_graph.png")
msg_text <- κόλλα ("Το πιο πρόσφατο ποσοστό ανεργίας στις ΗΠΑ ήταν {ανεργία [σειρά_ μήκους]}, τον μήνα που ξεκινά από το {month_starting [series_length]}. Αυτό είναι {ανεργία [σειρά_ μήκος] - ανεργία [σειρά_ μήκους - 1]} ποσοστιαίες μονάδες διαφορά από την προηγούμενη μήνα. Επισυνάπτεται ένα γράφημα των δεδομένων από τον Ιανουάριο του 2000. ")

μήνυμα2%

σε ("[email protected]")%>%

από ("[email protected]")%>%

θέμα ("Το γραπτό μου μήνυμα με συνημμένο γράφημα")%>%

text_body (msg_text)%>%

attach_part (msg_text)%>%

attach_file ("employment_graph.png")

send_message (μήνυμα2)

Εάν θέλετε, μπορείτε να χρησιμοποιήσετε τη λειτουργία create_draft () για να δημιουργήσετε ένα πρόχειρο μήνυμα στο λογαριασμό σας στο Gmail, αν θέλετε να ελέγξετε την εμφάνισή του πριν το στείλετε. Σε αυτήν την περίπτωση, create_draft (μήνυμα2) θα δημιουργήσει ένα προσχέδιο του μηνύματος συνημμένου αρχείου μου.

Αν θέλετε να δείτε πώς φαίνεται όλα αυτά σε δράση, ρίξτε μια ματιά στο βίντεο στην κορυφή αυτού του άρθρου. Και για περισσότερες συμβουλές R, μεταβείτε στη σελίδα βίντεο Do More With R ή δείτε τη λίστα αναπαραγωγής Do More With R YouTube.

$config[zx-auto] not found$config[zx-overlay] not found