用雲端試算表操控Gmail群發電子郵件,原來這麼容易,謝謝google大神
雲端試算表
首先要有一個雲端試算表,我是用下面的試算表來發信
附件的id是在公開pdf共用連結的時候,中間的id亂碼,如下圖/d/到/view 中間,

我分兩個頁籤,第一個頁籤是給發信的時候用的,第二個是給我做運算用的,運算什麼?就是把人名阿,單位阿,信件地址等自動帶入信件裡面,把名單填入第二個頁籤後,回到第一個頁籤用excel公式一次就拉好所有的信件內容了,很懶的話就按我去建立副本。
接著我們就要來設定指令碼
執行步驟
- 按工具列裡面的【工具】>【指令碼編輯器】,畫面跳到google script編輯器
- 把下面的程式碼完整的覆蓋所有內容,並對內容稍做修改,
- 完成後按【檔案】>【儲存】
- 按【執行】>【執行函式】,第一次執行的時候會要求給予權限,阿都自己寫的,所以就大方的給吧
- 在執行的時候會有一個黃色小框框在畫面上,完成以後按【查看】>【紀錄】,可以看到所有寄出的信件標題。我還是會建議在系統最上面還是放一個自己的信箱,確保有正常執行
google script參考程式碼
function mailto() {
var spreadsheet = SpreadsheetApp.openById('1JpoRVp4CHG40l_owMBeaXnXM0Yaqma5x2osu71xG8Us'),//這邊要換成雲端試算表連結裡的id
sheet = spreadsheet.getSheetByName('list'),//這邊要換成你的試算表的第一個頁籤的名稱
lastCol = sheet.getLastColumn(),
lastRow = sheet.getLastRow(),
range = sheet.getRange(1,1,lastRow,lastCol),
Values = range.getValues();
Logger.log(Values);
for(var i=1;i < Values.length;i++){
Logger.log(Values[i][1]);
var file = DriveApp.getFileById(Values[i][3]),
file1 = DriveApp.getFileById(Values[i][4]),
file2 = DriveApp.getFileById(Values[i][5]),
file3 = DriveApp.getFileById(Values[i][6]);//這邊設置四個附件檔,沒有那麼多的話要自己刪掉,記得最後要用;結尾
Logger.log(file);
GmailApp.sendEmail(Values[i][0],Values[i][1],Values[i][2], {
attachments:[file.getAs(MimeType.PDF),file1.getAs(MimeType.PDF),file2.getAs(MimeType.PDF),file3.getAs(MimeType.PDF)],//這邊設置四個附件檔,沒有那麼多的話要自己刪掉,例如[file.getAs(MimeType.PDF),file1.getAs(MimeType.PDF),file2.getAs(MimeType.PDF)],
htmlBody:Values[i][2]
}
);
};
}
後記:
1.gs的運轉速度不是很快,google有設定安全的最長執行時間,所以大概一次寄50封就有點極限了
2.gmail有設置一天的發信上限,我寄了差不多一百封就要換帳號了,哈哈