R 套件筆記 | 利用 gmailr 套件與設定 gmail 帳號,實現自動化制式郵件

更新於 發佈於 閱讀時間約 5 分鐘

由於工作上會收發大量電子郵件,大部分的信件都是制式的內容,老實說工作初期真的覺得超煩的,雖說只是制式的更換收件人、貼上對應的內容,但是當案件一多不免出現錯誤,也沒辦法專注在信件的內容,淪為一項純粹愚蠢的工作。

gmailr 這個套件可說是把我從信件攻擊中拯救出來,可以用熟悉的 R 語言擺脫那無聊的 paper work,專注在工作本身,將自動生成信件草稿批次產生之後,只要確認信件內容,若有必要進行個別修改就可以寄出,增加工作效率與減少害怕弄錯的心理壓力。

套件安裝與帳號設定

gmailr 套件安裝本身跟一般 R 套件相同,但是 Google 帳號設定有點麻煩,每次要設定新信箱都要想很久外加查半天(不過也是因為我跟 Google API 不熟而且每個帳號也只需要設定一次),需要在 Google Cloud 上操作以下步驟:

  1. 建立新專案,如果是公司 G Suite 帳號可以將位置設定在機構內,若為一般免費的 Google 帳號就設定無機構。
  2. 在專案內搜尋並啟用 Gmail API。
  3. 建立 OAuth 用戶端憑證,應用程式名稱取名似乎有被限制(比如不能出現 "mail" 這個字),支援電子郵件填自己就可以了,應用程式類型選擇電腦版應用程式。
  4. 下載憑證 json 檔,檔名預設很長,我自己習慣命名為 credentials.json。
  5. 如果專案設定無機構的話記得去新增使用者加入自己的信箱,否則執行後會顯示未完成 Google 驗證程序(內部機構則不需進行此步驟)。
  6. 執行 R script,gm_auth() 執行後應自動跳出瀏覽器畫面並詢問存取範圍,一路確認並同意之後,最終會出現 "Authentication complete. Please close this page and return to R." 表示帳號連接成功。


rm(list=ls())
#install.packages("gmailr")
library(gmailr)
#path放上下載好的憑證檔案​
gm_auth_configure(path = "YOURPATH/credentials.json")
#可以在 email 放上指定的信箱,或是 = TRUE 在瀏覽器上選擇
gm_auth(email = TRUE ,cache = ".secret")
#Waiting for authentication in browser...
#Press Esc/Ctrl + C to abort
#Authentication complete.


信件搜尋和內容讀取

搜尋指定條件的信件可用於統計或是後續自動化處理,比如某一時間區段收到的信件數量,或是抓取制式信件的固定字串進行後續處理。

##搜尋符合的信
# search 與 gmail ​搜尋功能相同
#num_results 預設值為 100
msgs = gm_messages(search = "搜尋關鍵字 after:2023/01/01 before:2023/12/31",
num_results=1000)
#取出信件 id​
id=gm_id(msgs)

#利用 id 讀取第 i 封信件內容​
x=gm_message(id[i] ,user_id = "me")
#信件日期​
gm_date(x)
#信件標題​
gm_subject(x)
#信件內容(gm_body有時候沒辦法讀取到信件內容,可能是編碼問題?)
gm_body(x)
gmailr:::base64url_decode_to_char(x$payload$parts[[1]]$parts[[1]]$body$data)
#附檔下載
gm_save_attachments(x)


編寫信件

程式可以設定收件人、附件,搭配 html 語法撰寫郵件內容,依照需求可以選擇將郵件放在草稿匣或是直接寄出,搭配迴圈和資料表就可以大量產出信件。

 email <- gm_mime() %>%
#收件者信箱​
gm_to("TOMAIL") %>%
#副本收件者
gm_cc("CCMAIL") %>%
#寄件者信箱
gm_from("MYMAIL") %>%
#寫出中文標題需要一些轉換
gm_subject(paste0("=?utf-8?B?",
base64enc::base64encode(charToRaw(enc2utf8("信件標題"))), "?=")) %>%
#信件內容
gm_html_body("MAIL") %>%
#附件
gm_attach_file("ATTACHFILE")
#撰寫草稿
gm_create_draft(email)
#直接寄出
gm_send_message(email)



留言
avatar-img
留言分享你的想法!
金吉-avatar-img
發文者
7 天前
avatar-img
金吉的沙龍
7會員
41內容數
寫一些自己覺得有趣的事情
你可能也想看
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
大家好,我是一名眼科醫師,也是一位孩子的媽 身為眼科醫師的我,我知道視力發展對孩子來說有多關鍵。 每到開學季時,診間便充斥著許多憂心忡忡的家屬。近年來看診中,兒童提早近視、眼睛疲勞的案例明顯增加,除了3C使用過度,最常被忽略的,就是照明品質。 然而作為一位媽媽,孩子能在安全、舒適的環境
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
我的「媽」呀! 母親節即將到來,vocus 邀請你寫下屬於你的「媽」故事——不管是紀錄爆笑的日常,或是一直想對她表達的感謝,又或者,是你這輩子最想聽她說出的一句話。 也歡迎你曬出合照,分享照片背後的點點滴滴 ♥️ 透過創作,將這份情感表達出來吧!🥹
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
打開 jupyter notebook 寫一段 python 程式,可以完成五花八門的工作,這是玩程式最簡便的方式,其中可以獲得很多快樂,在現今這種資訊發達的時代,幾乎沒有門檻,只要願意,人人可享用。 下一步,希望程式可以隨時待命聽我吩咐,不想每次都要開電腦,啟動開發環境,只為完成一個重複性高
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想來玩看看
Thumbnail
在日常生活和工作中,我們經常需要發送電子郵件來進行溝通和分享資訊。本文將介紹如何使用Python的pywin32模組連接到Outlook,並通過程式來自動發送郵件。
Thumbnail
在日常生活和工作中,我們經常需要發送電子郵件來進行溝通和分享資訊。本文將介紹如何使用Python的pywin32模組連接到Outlook,並通過程式來自動發送郵件。
Thumbnail
利用 gmailr 套件能夠有效地提升工作效率,透過 R 語言自動生成信件草稿,並允許個別修改與寄送,大幅減少出錯機率。本文介紹 gmailr 套件的安裝與帳號設定步驟,以及如何搜尋和讀取郵件以及撰寫郵件的相關方法。
Thumbnail
利用 gmailr 套件能夠有效地提升工作效率,透過 R 語言自動生成信件草稿,並允許個別修改與寄送,大幅減少出錯機率。本文介紹 gmailr 套件的安裝與帳號設定步驟,以及如何搜尋和讀取郵件以及撰寫郵件的相關方法。
Thumbnail
 程式開發,功能 :               本程式執行後,自動寄出email,寄出的內容可依照讀取的參數檔內容而決定
Thumbnail
 程式開發,功能 :               本程式執行後,自動寄出email,寄出的內容可依照讀取的參數檔內容而決定
Thumbnail
在C#程式開發中,有時候我們需要透過Outlook來發送郵件。這篇教學將會教你如何使用Microsoft.Office.Interop.Outlook來完成這個任務。
Thumbnail
在C#程式開發中,有時候我們需要透過Outlook來發送郵件。這篇教學將會教你如何使用Microsoft.Office.Interop.Outlook來完成這個任務。
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Request內容 package main import ( "fmt" "log" "net/http" "strings" ) func request(w http.ResponseWriter, r *http.Request) { //這些資訊是輸出到伺服器端的列印訊息
Thumbnail
Make 提供了一個便捷的方式,讓你可以輕鬆地串聯不同的程式,使得工作和生活流程更加順暢。在這篇教學中,我們將探討如何透過 Make 將 Google Forms 與 Notion 整合,讓你能直接將表單回應的內容儲存至 Notion 資料庫中,省去了一一手動複製貼上的繁瑣步驟,節省了大量時間。
Thumbnail
Make 提供了一個便捷的方式,讓你可以輕鬆地串聯不同的程式,使得工作和生活流程更加順暢。在這篇教學中,我們將探討如何透過 Make 將 Google Forms 與 Notion 整合,讓你能直接將表單回應的內容儲存至 Notion 資料庫中,省去了一一手動複製貼上的繁瑣步驟,節省了大量時間。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News