Search this site
Embedded Files
資訊科技補充教材
  • 首頁
  • 一年級
    • 1:第一章
  • 三年級
    • 5:第一章
  • 作品欣賞
    • 110-1:三年級
    • 110-1:二年級
    • 110-1:一年級
  • 好用連結
    • 線上學習
    • 3D列印
    • 自架Scratch網頁遊戲
    • 程式隨筆
      • Google App Script
    • Canva免費設計工具
    • Gather
  • 特別課程
  • 小遊戲
    • 數學-正負數加減
資訊科技補充教材
  • 首頁
  • 一年級
    • 1:第一章
  • 三年級
    • 5:第一章
  • 作品欣賞
    • 110-1:三年級
    • 110-1:二年級
    • 110-1:一年級
  • 好用連結
    • 線上學習
    • 3D列印
    • 自架Scratch網頁遊戲
    • 程式隨筆
      • Google App Script
    • Canva免費設計工具
    • Gather
  • 特別課程
  • 小遊戲
    • 數學-正負數加減
  • More
    • 首頁
    • 一年級
      • 1:第一章
    • 三年級
      • 5:第一章
    • 作品欣賞
      • 110-1:三年級
      • 110-1:二年級
      • 110-1:一年級
    • 好用連結
      • 線上學習
      • 3D列印
      • 自架Scratch網頁遊戲
      • 程式隨筆
        • Google App Script
      • Canva免費設計工具
      • Gather
    • 特別課程
    • 小遊戲
      • 數學-正負數加減

Google
App Script

參考書:Google Apps Script雲端自動化與動態網頁系統實戰

收到Google表單回應後立即傳送至LINE通知

(程式碼嵌於回覆表單內)


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();

這個地方感覺可以改成只讀最後一行,不要跑全部資料

收到Google表單回覆後立即傳送Email至填報者與管理者

(程式碼嵌於回覆表單內)


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: //內文 &nbsp;是空格

"<!DOCTYPE html>"+

"<html>"+

"<body>"+

"親愛的&nbsp;"+ Name +"&nbsp;同學<br/><br/>"+

"<p style='font-family: Microsoft JhengHei;'>感謝您填報使用狀況,填報單如附件</p> <br/>"+

"<p> 總務處&nbsp;敬上</p>"+

"</body>"+

"</html>",

attachments:[pdf], //附件 pdf是前面的變數,就是剛剛文件轉檔成PDF的檔案位置

});

}

如果只是寄信通知表單內容應該只需要將<body>內容用html碼table處理就可以漂亮的寄信了
(如果要同時寄給多人的話才要用這個程式,如果只是寄給填報者而已的話,只需要用表單內建功能就好了)

MailApp.sendEmail({

to: Email, //正常寄信

bcc: MasterEmail, //密件 如果要用副本就是 cc:

subject: "使用回報單", //主旨

htmlBody: //內文 &nbsp;是空格

"<!DOCTYPE html>"+

"<html>"+

"<body>"+

"親愛的&nbsp;"+ Name +"&nbsp;同學<br/><br/>"+

"<p style='font-family: Microsoft JhengHei;'>感謝您填報使用狀況,填報單如附件</p> <br/>"+

"<p> 總務處&nbsp;敬上</p>"+

"</body>"+

"</html>",

});

Report abuse
Page details
Page updated
Report abuse