(程式碼嵌於回覆表單內)
var lineToken = '放入 LINE Notify 權杖'; // 註冊 https://notify-bot.line.me/my/
var LineText = '';
function main() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var data = range.getValues();
for (var i = 1; i < data.length; ++i) {
var sendText = sheet.getRange(i+1,5).getValues();
// 確定下一行是空才抓。getRange(i+1,X) X是要抓幾格。
if ( sendText == '') {
var rows = data[i];
var Time = Utilities.formatDate(rows[0], 'GMT+8', 'yyyy/MM/dd HH:mm');
var Q_1 = rows[1];
var Q_2 = rows[2];
var Q_3 = rows[3]; //可依照題目自行定義變數名稱 row[1]是回覆表單的欄位
sheet.getRange(i+1,5).setValue('已發佈');//最後備註是否發布
LineText = '\n回報時間:' + Time + '\n\n' +
'第一題:' + Q_1 + '\n\n'+
'第二題:' + Q_2 + '\n\n'+
'第三題:' + Q_3 + '\n\n'; //"\n"是換行的意思可自行增減
//Logger.log(LineText);
sendToLine(LineText);
}
}
}
function sendToLine(LineText){
var token = lineToken;
var options =
{
"method": "post",
"headers" : {"Authorization" : "Bearer "+ token},
"payload":{
'message':'\n'+ LineText,
}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
感覺這個還可以簡化程式
for (var i = 1; i < data.length; ++i) {
var sendText = sheet.getRange(i+1,5).getValues();
這個地方感覺可以改成只讀最後一行,不要跑全部資料
(程式碼嵌於回覆表單內)
function PdfSendMail() {
var MasterEmail="管理者1 E-mail,管理者2 Email"; //如需新增可用逗號,區隔管理員Email
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var document = DriveApp.getFileById('PDF樣式,請用Google文件建立,將其檔案ID貼於此').makeCopy();
var documentId = document.getId();
var range = sheet.getSelection().getActiveRange();
var i = 1; //以下至 var New_Name 為將表單回覆內容儲存至變數內 Utilities.formatDate()為指定格式
var DoTime = Utilities.formatDate(range.getCell(i,i).getValue(), 'GMT+8', 'yyyy/MM/dd HH:mm');
var Email = range.getCell(i,i+1).getValue();
var Class = range.getCell(i,i+2).getValue();
var Num = range.getCell(i,i+3).getValue();
var Name = range.getCell(i,i+4).getValue();
var UseDate = Utilities.formatDate(range.getCell(i,i+5).getValue(), 'GMT+8', 'yyyy/MM/dd');
var UseTime = '第' + range.getCell(i,i+6).getValue() + '節';
var QA = range.getCell(i,i+7).getValue();
var New_Name;
New_Name = DriveApp.getFileById(documentId).setName('回報單_' + UseDate + '_' + UseTime+'_'+ Class); //setName()儲存回報單的檔案名稱
var doc = DocumentApp.openById(documentId);
var body = doc.getBody();
body.replaceText('{{DoTime}}', DoTime); //body.replaceText 將文件範本內的字用變數(回覆的內容)取代
body.replaceText('{{Email}}', Email); //{{ }}文件內要放入回覆內容的地方使用這個搜尋取代的位子
body.replaceText('{{Class}}', Class);
body.replaceText('{{Num}}', Num);
body.replaceText('{{Name}}', Name);
body.replaceText('{{UseDate}}', UseDate);
body.replaceText('{{UseTime}}', UseTime);
body.replaceText('{{QA}}', QA);
doc.saveAndClose();
var FolderId = "文件與PDF儲存的資料夾ID";
var Folder = DriveApp.getFolderById(FolderId);
Folder.addFile(New_Name);
DriveApp.getFolderById(FolderId).getParents().next().removeFile(New_Name);
var NewDocURL = New_Name.getUrl();
var html; //寄發的Email內容
var pdf;
pdf = New_Name.getAs('application/pdf');
Folder.createFile(pdf);
MailApp.sendEmail({
to: Email, //正常寄信
bcc: MasterEmail, //密件
subject: "使用回報單", //主旨
htmlBody: //內文 是空格
"<!DOCTYPE html>"+
"<html>"+
"<body>"+
"親愛的 "+ Name +" 同學<br/><br/>"+
"<p style='font-family: Microsoft JhengHei;'>感謝您填報使用狀況,填報單如附件</p> <br/>"+
"<p> 總務處 敬上</p>"+
"</body>"+
"</html>",
attachments:[pdf], //附件 pdf是前面的變數,就是剛剛文件轉檔成PDF的檔案位置
});
}
如果只是寄信通知表單內容應該只需要將<body>內容用html碼table處理就可以漂亮的寄信了
(如果要同時寄給多人的話才要用這個程式,如果只是寄給填報者而已的話,只需要用表單內建功能就好了)
MailApp.sendEmail({
to: Email, //正常寄信
bcc: MasterEmail, //密件 如果要用副本就是 cc:
subject: "使用回報單", //主旨
htmlBody: //內文 是空格
"<!DOCTYPE html>"+
"<html>"+
"<body>"+
"親愛的 "+ Name +" 同學<br/><br/>"+
"<p style='font-family: Microsoft JhengHei;'>感謝您填報使用狀況,填報單如附件</p> <br/>"+
"<p> 總務處 敬上</p>"+
"</body>"+
"</html>",
});