繁体   English   中英

如何在Gmail中创建电子邮件模板,以将下一周的摘要发送到多个电子邮件地址

[英]How to create an email template in Gmail that sends a summary of the upcoming week to multiple email addresses

我为我的同事设置了一个用于行业活动的Google日历,我想每周发送一次电子邮件(通过Gmail),以总结此Google日历中下周的活动。 我很乐意创建视觉模板并将其设置为每周自动发送,但是我需要一些帮助以获取Google日历信息。

我为此调查了插件,但无法在工作电子邮件中使用它们。

我找到了用于在网站上显示Google日历事件信息的代码,但是之前我没有使用公共apiKey或网络应用程序客户端ID。 我出于安全原因对使用它们感到谨慎,因为这是给我的工作电子邮件的密码-我对安全设置此设置没有信心。

 <html> <head> </head> <body bgcolor="black" text="white" link="#00ffff" vlink="green" alink="yellow"> <script> var clientId = 'YOUR_CLIENT_ID HERE'; //choose web app client Id, redirect URI and Javascript origin set to http://localhost var apiKey = 'YOUR_APIKEY_HERE'; //choose public apiKey, any IP allowed (leave blank the allowed IP boxes in Google Dev Console) var userEmail = "YOUR_ADDRESS@gmail.com"; //your calendar Id var userTimeZone = "YOUR_TIME_ZONE_HERE"; //example "Rome" "Los_Angeles" ecc... var maxRows = 10; //events to shown var calName = "YOUR CALENDAR NAME"; //name of calendar (write what you want, doesn't matter) var scopes = 'https://www.googleapis.com/auth/calendar'; //--------------------- Add a 0 to numbers function padNum(num) { if (num <= 9) { return "0" + num; } return num; } //--------------------- end //--------------------- From 24h to Am/Pm function AmPm(num) { if (num <= 12) { return "am " + num; } return "pm " + padNum(num - 12); } //--------------------- end //--------------------- num Month to String function monthString(num) { if (num === "01") { return "JAN"; } else if (num === "02") { return "FEB"; } else if (num === "03") { return "MAR"; } else if (num === "04") { return "APR"; } else if (num === "05") { return "MAJ"; } else if (num === "06") { return "JUN"; } else if (num === "07") { return "JUL"; } else if (num === "08") { return "AUG"; } else if (num === "09") { return "SEP"; } else if (num === "10") { return "OCT"; } else if (num === "11") { return "NOV"; } else if (num === "12") { return "DEC"; } } //--------------------- end //--------------------- from num to day of week function dayString(num){ if (num == "1") { return "mon" } else if (num == "2") { return "tue" } else if (num == "3") { return "wed" } else if (num == "4") { return "thu" } else if (num == "5") { return "fri" } else if (num == "6") { return "sat" } else if (num == "0") { return "sun" } } //--------------------- end //--------------------- client CALL function handleClientLoad() { gapi.client.setApiKey(apiKey); checkAuth(); } //--------------------- end //--------------------- check Auth function checkAuth() { gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, handleAuthResult); } //--------------------- end //--------------------- handle result and make CALL function handleAuthResult(authResult) { if (authResult) { makeApiCall(); } } //--------------------- end //--------------------- API CALL itself function makeApiCall() { var today = new Date(); //today date gapi.client.load('calendar', 'v3', function () { var request = gapi.client.calendar.events.list({ 'calendarId' : userEmail, 'timeZone' : userTimeZone, 'singleEvents': true, 'timeMin': today.toISOString(), //gathers only events not happened yet 'maxResults': maxRows, 'orderBy': 'startTime'}); request.execute(function (resp) { for (var i = 0; i < resp.items.length; i++) { var li = document.createElement('li'); var item = resp.items[i]; var classes = []; var allDay = item.start.date? true : false; var startDT = allDay ? item.start.date : item.start.dateTime; var dateTime = startDT.split("T"); //split date from time var date = dateTime[0].split("-"); //split yyyy mm dd var startYear = date[0]; var startMonth = monthString(date[1]); var startDay = date[2]; var startDateISO = new Date(startMonth + " " + startDay + ", " + startYear + " 00:00:00"); var startDayWeek = dayString(startDateISO.getDay()); if( allDay == true){ //change this to match your needs var str = [ '<font size="4" face="courier">', startDayWeek, ' ', startMonth, ' ', startDay, ' ', startYear, '</font><font size="5" face="courier"> @ ', item.summary , '</font><br><br>' ]; } else{ var time = dateTime[1].split(":"); //split hh ss etc... var startHour = AmPm(time[0]); var startMin = time[1]; var str = [ //change this to match your needs '<font size="4" face="courier">', startDayWeek, ' ', startMonth, ' ', startDay, ' ', startYear, ' - ', startHour, ':', startMin, '</font><font size="5" face="courier"> @ ', item.summary , '</font><br><br>' ]; } li.innerHTML = str.join(''); li.setAttribute('class', classes.join(' ')); document.getElementById('events').appendChild(li); } document.getElementById('updated').innerHTML = "updated " + today; document.getElementById('calendar').innerHTML = calName; }); }); } //--------------------- end </script> <script src='https://apis.google.com/js/client.js?onload=handleClientLoad'></script> <div id='content'> <h1 id='calendar' style="color:grey">LOADING . . . .</h1> <ul id='events'></ul> </div> <p id='updated' style="font-size:12; color:grey">updating . . . . .</p> </body> </html> 

这几乎可以解决我的问题,但是我想知道是否要从与要从中提取信息的日历相关联的电子邮件地址发送电子邮件,是否可以避免使用“ var clientId”和“ var apiKey”? 还是有资源说明如何安全地使用此代码?

如果您创建Apps脚本代码,则可以避免使用clientID和API密钥,共享的代码是创建Web应用程序,因为它在Google Services外部,因此需要clientId和API密钥。

有关Google Apps脚本的更多详细信息,可以检查https://developers.google.com/apps-script/https://developers.google.com/apps-script/reference/calendar/以获取日历。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM