A program I use to help me to remember things like todo lists, grocery lists, appointments and even project lists for clients. It also creates calendar events and notifications.
var yourEmailAddress='your google email address';
function onOpen()
{
SpreadsheetApp.getUi().createMenu('My Tools')
.addItem('Load AdminBar', 'loadAdminBar')
.addItem('Load SideBar', 'loadSideBar')
.addSubMenu(SpreadsheetApp.getUi().createMenu('Send Menu')
.addItem('Email Hotlist','sendHotList')
.addItem('Email Hold List', 'sendHoldList')
.addItem('Email Done List', 'sendDonelist')
.addItem('Email Complete List', 'sendCompleteList'))
.addToUi();
var sh=SpreadsheetApp.getActive().getSheetByName('Notes');
var rg=sh.getRange(sh.getLastRow()+5,1).activate();
loadAdminBar();
}
function getRDQ()
{
return 'Your have ' + MailApp.getRemainingDailyQuota() + ' emails left in your daily quota.';
}
function dispText(obj)
{
var ss=SpreadsheetApp.getActive();
var sht=ss.getSheetByName('Notes');
keepAMemo();
var msgsht=ss.getSheetByName('memo');
var ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "M/dd/yyyy HH:mm:ss");
var row=[];
row.push(ts);
row.push(obj.type);
row.push(obj.text);
row.push(Session.getActiveUser().getEmail());
sht.appendRow(row);
sht.getRange(sht.getLastRow(),3).setBackground(obj.color);
var clrmsg=msgsht.getRange('A1').getValue();
msgsht.getRange('A1').setValue('');//I decided to clear so it only gets sent once because most of the time I will be right there to grab it.
return clrmsg;
}
function loadAdminBar()
{
var userInterface=HtmlService.createHtmlOutputFromFile('adminbar').setTitle('Don\'t Forget Admin');
SpreadsheetApp.getUi().showSidebar(userInterface);
}
function loadSideBar()
{
var userInterface=HtmlService.createHtmlOutputFromFile('sidebar1').setTitle('Don\'t Forget Web App');//sidebar for html and formBar for form
SpreadsheetApp.getUi().showSidebar(userInterface);
}
function doGet()
{
var output=HtmlService.createHtmlOutputFromFile('sidebar1');
return output.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL).addMetaTag('viewport', 'width=360, initial-scale=1');
}
function getSelectOptions()
{
sortOptions();
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Options');
var rg=sh.getDataRange();
var vA=rg.getValues();
var options=[];
for(var i=0;i<vA.length;i++)
{
options.push(vA[i][0]);
}
return vA;
}
function addNewLabel(lbl)
{
var sh=SpreadsheetApp.getActive().getSheetByName('Options');
sh.appendRow([lbl]);
return getSelectOptions();
}
function delSelectedLabel(lbl)
{
var r=[];
if(lbl)
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Options');
var rg=sh.getDataRange();
var vA=rg.getValues();
var options=[];
for(var i=0;i<vA.length;i++)
{
if(vA[i][0]==lbl)
{
sh.deleteRow(i+1);
break;//delete 1 at a time due to row loss problem
}
}
r=getSelectOptions();
}
return r;
}
function sortOptions()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Options');
var rg=sh.getRange(2,1,sh.getLastRow()-1,1);
rg.sort({column:1,ascending:true});
}
function sendHotList()
{
sendList('#f4cccc');
}
function sendAllList()
{
sendList('#ffffff');
}
function sendHoldList()
{
sendList('#fff2cc');
}
function sendDoneList()
{
sendList('#d9ead3');
}
function getFuncs()
{
var br='<br />';
var funcs=[{desc:'Display HotList',id:'showHotList'},{desc:'Display Last Day',id:'getLastDay'},{desc:'Display Events',id:'dispEvents'},{desc:'Add New Label',id:'addNewLabel'},{desc:'Delete Label',id:'delSelectedLabel'},{desc:'Clear',id:'clear'},{desc:'Create Event',id:'createEvent'},{desc:'Get RemainingDailyQuota',id:'getRDQ'},{desc:'Display Last Week',id:'dispLastSeven'},{desc:'Send HotList',id:'sendHotList'},{desc:'Send Last Day',id:'sendLastDay'},{desc:'Send Last Week',id:'sendLastSeven'}];
var hl='<strong>Available Functions</strong>';
//hl+=br + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm");
for(var i=0;i<funcs.length;i++)
{
hl+=br + '<label><input class="rad1" type="radio" name="cmdList" value="' + funcs[i].id + '" onClick="selectRadio(\'' + funcs[i].id + '\');" />' + funcs[i].desc + '</label>';
}
return hl;
}
function getHotList()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
var cA=rg.getBackgrounds();
var br='<br />';
var hl=br + 'Today:<strong>' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</strong>';
for(var i=0;i<vA.length;i++)
{
if(cA[i][2]=='#f4cccc')
{
hl+=br + '<span class="type">' + vA[i][1] + ':</span>';
hl+=br + '<span class="date">' + Utilities.formatDate(new Date(vA[i][0]), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</span>';
hl+='<input class="marknot" title="Remove from Hot List" name="marknot" type="checkbox" value="' + new Date(vA[i][0]).valueOf() + '" />';
hl+=br + '<span class="note">' + vA[i][2] + '</span><br/>';
}
}
hl+=br + '<input type="button" value="Mark SelectedAs NotHot" onClick="markAsNot();" style="width:250px;height:35px;text-align:center;margin:10px 0 10px 0;" />';
return hl;
}
function getSelectList()
{
var ss=SpreadsheetApp.getActive();
var vO=getSelectOptions();
var sl='';
var br='<br />';
for(var i=1;i<vO.length;i++)
{
sl+=br + '<label><input class="chk1" name="handsel" title="Display Message of This Type" type="checkbox" value="' + vO[i] + '" />' + vO[i] + '</label>';
}
return sl;
}
function sendList(color)
{
var color=(typeof(color)!='undefined')?color:'#f4cccc';//#f4cccc lightred #fff2cc lightyellow #d9ead3 lightgreen
var colorName={'#f4cccc':'hot','#fff2cc':'hold','#d9ead3':'done','#ffffff':'complete'}
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
var cA=rg.getBackgrounds();
var br='<br />';
var subject='Your ' + colorName[color] + ' list has arrived.';
var body=br + 'Hello Jim' + br + 'This is your ' + colorName[color] + ' list.';
var send=false;
var rdq=MailApp.getRemainingDailyQuota();
var dmsg= 'Today: ' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm");
body+=br + dmsg;
var tmsg='You have ' + rdq + ' emails left in your daily quota.'
if(rdq>75)
{
for(var i=0;i<vA.length;i++)
{
if(cA[i][2]==color || color=='#ffffff')//if white send all
{
body+=br + br + '<span style="color:#ff0000;">' + vA[i][1] + '</span>' + br + vA[i][2];
send=true;
}
}
body+=br + br + 'Sincerely ' + br + 'The Computer';
if(send)
{
MailApp.sendEmail({to:yourEmailAddress,from:yourEmailAddress,subject: subject, htmlBody: body});
SpreadsheetApp.getActive().toast(tmsg, 'Emails Left');
}
}
}
function sendLastSeven()
{
sendLastDDays(7);
}
function sendLastDay()
{
sendLastDDays(1);
}
function sendLastDDays(D)
{
var D=(typeof(D)!='undefined')?D:1;
var br='<br />';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
var aDay=1000*60*60*24;
var DDaysAgo=new Date().valueOf()-(D*aDay);
var subject='Your last ' + D + ' days list.';
var body='';
var send=false;
var rdq=MailApp.getRemainingDailyQuota();
var dmsg= 'Today:<strong>' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</strong>';
var tmsg='You have ' + Number(rdq-1) + ' emails left in your daily quota.'
body+=br + dmsg + br + tmsg + br;
for(var i=1;i<vA.length;i++)
{
if(new Date(vA[i][0]).valueOf()>DDaysAgo && rdq>75)
{
body+=br + br + Utilities.formatDate(new Date(vA[i][0]), Session.getScriptTimeZone(), "E MMM d, HHmm");
body+=br + '<span style="color:#ff0000;">' + vA[i][1] + '</span>' + br + vA[i][2];
send=true;
}
}
if(send)
{
MailApp.sendEmail({to:yourEmailAddress,from:yourEmailAddress,subject: subject, htmlBody: body});
//var s=Utilities.formatString('<br />%s',body);
//var userInterface=HtmlService.createHtmlOutput(s).setWidth(400).setHeight(450);
//SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Last Seven Days')
}
}
function sendSelected(sA)//I decided not to send emails but to simply review on device.
{
var br='<br />';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
var subject='Your selected list.';
var body='';
var send=false;
var dmsg= 'Today:<strong>' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</strong>';
body+=br + dmsg;
for(var i=1;i<vA.length;i++)
{
if(sA.indexOf(vA[i][1])>-1)
{
body+=br + br + Utilities.formatDate(new Date(vA[i][0]), Session.getScriptTimeZone(), "E MMM d, HHmm");
body+=' <input type="checkbox" class="markdone" title="Mark As Done" name="markdone" value="' + new Date(vA[i][0]).valueOf() + '" />';
body+=br + '<span style="color:#ff0000;">' + vA[i][1] + '</span>' + br + vA[i][2];
send=true;
}
}
if(send)
{
//MailApp.sendEmail({to:yourEmailAddress,from:yourEmailAddress,subject: subject, htmlBody: body});
//var s=Utilities.formatString('<br />%s',body);
//var userInterface=HtmlService.createHtmlOutput(s).setWidth(400).setHeight(450);
//SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Selected');
body+=br + '<input type="button" value="Mark Selected As Done" onClick="markAsDone();" style="width:250px;height:35px;text-align:center;margin:10px 0 10px 0;" />';
return body;
}
else
{
return 'No Messages of that Type';
}
}
function markAsNot(dA)
{
var br='<br />';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=1;i<vA.length;i++)
{
for(var j=0;j<dA.length;j++)
{
if(new Date(vA[i][0]).valueOf()==dA[j])
{
sh.getRange(i+1,3).setBackground('#ffffff');
}
}
}
return true;
}
function markAsDone(dA)
{
var br='<br />';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
for(var i=1;i<vA.length;i++)
{
for(var j=0;j<dA.length;j++)
{
if(new Date(vA[i][0]).valueOf()==dA[j])
{
sh.getRange(i+1,2).setValue(vA[i][1] + ':Done');
}
}
}
return true;
}
function setBackgroundColor(color)
{
var ss=SpreadsheetApp.getActive();
var as=ss.getActiveSheet();
if(as.getName()=='Notes')
{
var rg=sh.getActiveRange();
as.getRange(rg.getRow(),3).setBackground(color);
}
else
{
var msg='Current Sheet Name is "' + as.getName() + '" which is not equal to "Notes".';
ss.toast(msg, 'Wrong Sheet')
}
}
function markDone()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getActiveRange();
var row=rg.getRow();
if(sh.getName()=='Notes')
{
sh.getRange(row,2).setValue('Done');
sh.getRange(row,3).setBackground('#d9ead3');
}
else
{
var msg='Current Sheet Name is "' + as.getName() + '" which is not equal to "Notes".';
ss.toast(msg, 'Wrong Sheet')
}
}
function keepAMemo()
{
var ss=SpreadsheetApp.getActive();
var allshts=ss.getSheets();
var itshere=false;
for(var i=0;i<allshts.length;i++)
{
if(allshts[i].getName()=='memo')
{
itshere=true;
break;
}
}
if(!itshere)
{
ss.insertSheet('memo');
}
}
function testTimeDifff()
{
calcTimeDifference('08/08/2017 21:24:11','8/13/2017 14:57:02')
}
function calcTimeDifference(Start,End)
{
if(Start && End)
{
var second=1000;
var minute=60*second;
var hour=minute*60;
var day=hour*24;
var t1=new Date(Start).valueOf();
var t2=new Date(End).valueOf();
var d=t2-t1;
var days=Math.floor(d/day);
var hours=Math.floor(d%day/hour);
var minutes=Math.floor(d%day%hour/minute);
var seconds=Math.floor(d%day%hour%minute/second);
return 'dd:hh:mm:ss\n' + days + ':' + hours + ':' + minutes + ':' + seconds;
}
else
{
return 'Invalid Inputs';
}
}
function getStartDate()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var cell=sh.getActiveCell();
var data=Utilities.formatDate(new Date(cell.getValue()), Session.getScriptTimeZone(), "M/dd/yyyy HH:mm:ss");
return data;
}
function getEndDate()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var cell=sh.getActiveCell();
var data=Utilities.formatDate(new Date(cell.getValue()), Session.getScriptTimeZone(), "M/dd/yyyy HH:mm:ss");
return data;
}
function dispFromDDaysAgo(D)
{
var D=(typeof(D)!='undefined')?D:1;
var br='<br />';
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Notes');
var rg=sh.getDataRange();
var vA=rg.getValues();
var aDay=1000*60*60*24;
var DDaysAgo=new Date().valueOf()-(D*aDay);
var hl=br + 'Today:<strong>' + Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</strong>';
for(var i=1;i<vA.length;i++)
{
if(new Date(vA[i][0]).valueOf()>DDaysAgo)
{
hl+=br + '<span class="type">' + vA[i][1] + ':</span><br /><span class="date">' + Utilities.formatDate(new Date(vA[i][0]), Session.getScriptTimeZone(), "E MMM d, HHmm") + '</span>' + br + '<span class="note">' + vA[i][2] + '</span><br />';
}
}
return hl;
}
function createEventWithReminders(eA)
{
var minute=60*1000;
var hour=60*minute;
var cal=CalendarApp.getCalendarById('CalendarId');
var now=new Date();
var startValue=now.valueOf() + (Number(eA[1]) * hour ) + (Number(eA[2]) * minute);
var start=new Date(startValue);
var endValue=start.valueOf() + (10 * minute);
var end=new Date(endValue);
var event=cal.createEvent(eA[0], start, end);
if(eA.length>3)
{
for(var i=3;i<eA.length;i++)
{
event.addEmailReminder(eA[i]);
}
}
else
{
event.addEmailReminder(0);
event.addEmailReminder(15);
event.addEmailReminder(30);
}
return true;
}
function displayCalendarInfo()
{
var cals=CalendarApp.getAllCalendars();
var s='Calendar Information';
for(var i=0;i<cals.length;i++)
{
s+=Utilities.formatString('<br />Name: %s Id: %s', cals[i].getName(),cals[i].getId());
}
var ui=HtmlService.createHtmlOutput(s).setWidth(1200).setHeight(450);
SpreadsheetApp.getUi().showModelessDialog(ui, 'Calendar Data');
}
function getMyEvents()
{
var allCals=CalendarApp.getAllCalendars();
var s=Utilities.formatString('<strong>%s</strong>',Utilities.formatDate(new Date(),Session.getScriptTimeZone(),"E MMM d, yyyy HHmm"))
var min=60 * 1000;
var hr=60 * min;
var day=24 * hr;
var wk=7 * day;
var start = new Date(new Date().setHours(0,0,0));
var end=new Date(start.valueOf() + (5 * wk));
var incl=['Your Calendars1','Your Calendars2'];
for(var i=0;i<allCals.length;i++)
{
if(incl.indexOf(allCals[i].getName())>-1)
{
s+=Utilities.formatString('<br /><strong>%s</strong>',allCals[i].getName());
var events=allCals[i].getEvents(start, end);
if(events)
{
s+='<br><ul>';
for(j=0;j<events.length;j++)
{
if(events[j].isAllDayEvent())
{
s+=Utilities.formatString('<li><strong>%s</strong>-%s %s</li>', events[j].getTitle(),'All Day',Utilities.formatDate(events[j].getStartTime(),Session.getScriptTimeZone(),"E MMM d"));
}
else
{
s+=Utilities.formatString('<li><strong>%s</strong>-%s</li>', events[j].getTitle(),Utilities.formatDate(events[j].getStartTime(),Session.getScriptTimeZone(),"E MMM d, HHmm"));
}
}
s+='</ul>';
}
}
}
//var ui=HtmlService.createHtmlOutput(s);
//SpreadsheetApp.getUi().showModelessDialog(ui, 'My Events');
return s;
}
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
$('#txt1').val('');
google.script.run
.withSuccessHandler(updateSelect)
.getSelectOptions();
});
function sendText()
{
var culr=$('input[name="priority"]:checked').val();
var type=$('#sel1').val();
var txt=$('#txt1').val();
var obj={'type':type,'text':txt,'color':culr};
$('#txt1').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(clearText)
.dispText(obj);
}
function clearText(p)
{
$("#not").prop("checked", true)
$('#txt1').css('background-color','#ffffff');
$('#txt1').val(p);
}
function updateSelect(vA)
{
var select = document.getElementById("sel1");
select.options.length = 0;
for(var i=0;i<vA.length;i++)
{
select.options[i] = new Option(vA[i],vA[i]);
}
}
function getRDQ()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.getRDQ();
}
function sendHotList()
{
google.script.run.sendHotList();
}
function showHotList()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.getHotList();
}
function getFuncs()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.getFuncs();
}
function showSelections()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.getSelectList();
}
function dispLastSeven()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.dispFromDDaysAgo(7);
}
function getLastDay()
{
google.script.run
.withSuccessHandler(dispInHotBox)
.dispFromDDaysAgo(1);
}
function dispInHotBox(hl)
{
document.getElementById('hotbox').innerHTML=hl;
}
function clearHotBox()
{
document.getElementById('hotbox').style.backgroundColor='#ffffff';
document.getElementById('hotbox').innerHTML='';
}
function markAsNot()
{
var dA=new Array();
$('#hotbox').css('background-color','#ffff00');
$.each($("input[name='marknot']:checked"), function() {
dA.push($(this).val());});
google.script.run
.withSuccessHandler(clearHotBox)
.markAsNot(dA);
}
function markAsDone()
{
var dA=new Array();
$('#hotbox').css('background-color','#ffff00');
$.each($("input[name='markdone']:checked"), function() {
dA.push($(this).val());});
google.script.run
.withSuccessHandler(clearHotBox)
.markAsDone(dA);
}
function sendSelected()
{
var sA = new Array();
$('#hotbox').css('background-color','#ffff00');
$.each($("input[name='handsel']:checked"), function() {
sA.push($(this).val());});
google.script.run
.withSuccessHandler(updateSelected)
.sendSelected(sA);
}
function sendLastSeven()
{
google.script.run.sendLastSeven();
}
function sendLastDay()
{
google.script.run.sendLastDay();
}
function addNewLabel()
{
var lbl=$('#txt2').val();
$('#txt2').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(upDateLabel)
.addNewLabel(lbl);
}
function delSelectedLabel()
{
var lbl=$('#sel1').val();
$('#txt2').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(upDateLabel)
.delSelectedLabel(lbl);
}
function upDateLabel(vA)
{
$('#txt2').css('background-color','#ffffff');
if(vA)
{
updateSelect(vA);
}
$('#txt2').val('');
}
function updateSelected(sl)
{
$('#hotbox').css('background-color','#ffffff');
//$('#hotbox').css('display','none');
document.getElementById('hotbox').innerHTML=sl;
}
function createEvent()
{
var s=$('#txt2').val();
var eA=s.split('/');
$('#txt2').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(upDateEvent)
.createEventWithReminders(eA);
}
function upDateEvent()
{
$('#txt2').css('background-color','#ffffff');
$('#txt2').val('');
}
function dispEvents()
{
$('#txt2').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(upDateEvents)
.getMyEvents();
}
function upDateEvents(hl)
{
$('#txt2').css('background-color','#ffffff');
$('#txt2').val('');
document.getElementById('hotbox').innerHTML=hl;
}
function selectRadio(id)
{
$('#btn3').unbind('click');
$('#btn3').val('Select Function');
$('#btn3').prop('disabled',true);
$('#txt2').prop('placeholder','');
switch(id)
{
case 'showHotList':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(showHotList);
$('#btn3').val('Display Hotlist');
$('#btn3').removeAttr('disabled')
break;
case 'sendHotList':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(sendHotList);
$('#btn3').val('Send Hotlist');
$('#btn3').removeAttr('disabled');
break;
case 'sendLastSeven':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(sendLastSeven);
$('#btn3').val('Send Last 7');
$('#btn3').removeAttr('disabled');
break;
case 'dispLastSeven':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(dispLastSeven);
$('#btn3').val('Display Last 7');
$('#btn3').removeAttr('disabled');
break;
case 'sendLastDay':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(sendLastDay);
$('#btn3').val('Send 1 Day');
$('#btn3').removeAttr('disabled');
break;
case 'getLastDay':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(getLastDay);
$('#btn3').val('Display 1 Day');
$('#btn3').removeAttr('disabled');
break;
case 'addNewLabel':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(addNewLabel);
$('#btn3').val('Add Label');
$('#btn3').removeAttr('disabled');
$('#txt2').prop('placeholder','New Label');
break;
case 'delSelectedLabel':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(delSelectedLabel);
$('#btn3').val('Delete Label');
$('#btn3').removeAttr('disabled');
break;
case 'getRDQ':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(getRDQ);
$('#btn3').val('RDQ');
$('#btn3').removeAttr('disabled');
break;
case 'createEvent':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(createEvent);
$('#btn3').val('Create Event');
$('#btn3').removeAttr('disabled');
$('#txt2').prop('placeholder','title/hr/min/xx/xx/xx');
break;
case 'dispEvents':
document.getElementById('hotbox').innerHTML='';
$('#btn3').click(dispEvents);
$('#btn3').val('Display Events');
$('#btn3').removeAttr('disabled');
$('#txt2').prop('placeholder','');
break;
default:
document.getElementById('hotbox').innerHTML='';
break;
}
}
console.log("My code");
</script>
<style>
div.scroll{background-color: #ffffff;width: 250px;height:100%;display:block;margin:0 0 0 5px;padding:0 0 0 10px;}
#sel1 option{width:250px;}
.type{color:#ff0000;font-weight:500;}
.date{color:#080b58;font-weight:500;}
.note{font-weight:500;}
.rad1{transform: scale(2);margin:10px 10px 10px 10px;vertical-align:-25%;}
.marknot,.markdone,.chk1{transform: scale(2);margin:10px 10px 10px 10px;vertical-align:-25%;}
body{margin:5px 5px 5px 10px;width:275px;}
</style>
</head>
<body>
<textarea id="txt1" rows="4" cols="35" style="width:250px;height:100px;"></textarea>
<select id="sel1" style="width:125px;height:35px;margin:10px 0 10px 0;">
<option value="" selected></option>
</select>
<label><input id="hot" type="radio" name="priority" value="#f4cccc" style="width:35px;height:35px;margin:10px 1px;vertical-align:-90%;" />Hot</label><label>
<input id="not" type="radio" name="priority" value="#ffffff" style="width:35px;height:35px;margin:5px 1px;vertical-align:-90%;" checked>Not</label>
<br />
<input id="btn0" type="button" value="submit" onClick="sendText();" style="width:125px;height:35px;text-align:center;margin:10px 0 10px 0;vertical-align:top;" />
<input id="txt2" type="text" placeholder="" style="width:125px;height:30px;margin:10px 0 10px 0;vertical-align:top;" />
<br />
<input id="btn2" type="button" value="Functions" onClick="getFuncs();" style="width:125px;height:35px;text-align:center;margin:10px 0 10px 0;" />
<input id="btn3" type="button" value="Select Function" style="width:125px;height:35px;text-align:center;margin:10px 0 10px 0;" disabled="true" />
<br /><input id="btn5" type="button" value="Selections" onClick="showSelections();" style="width:125px;height:35px;text-align:center;margin:10px 0 10px 0;" />
<input id="btn4" type="button" value="View Selected" onClick="sendSelected();" style="width:125px;height:35px;text-align:center;margin:10px 0 10px 0;" />
<br /><div id="hotbox" class="scroll"></div>
</body>
</html>
adminbar.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(function() {
});
function setBackground(color)
{
google.script.run.setBackgroundColor(color);
}
function markDone()
{
google.script.run.markDone();
}
function sendHotList()
{
google.script.run.sendHotList();
}
function showHotList()
{
if($('#hotbox').css('display') == 'none')
{
$('#hotbox').css('display','block')
google.script.run
.withSuccessHandler(displayHotList)
.getHotList();
}
else if($('#hotbox').css('display') == 'block')
{
$('#hotbox').css('display','none');
}
}
function displayHotList(hl)
{
document.getElementById('hotbox').innerHTML= '<h1>Hot List</h1>' + hl;
}
function sendLastSeven()
{
google.script.run.sendLastWeek();
}
function getStartDate()
{
google.script.run
.withSuccessHandler(loadStartDate)
.getStartDate();
}
function loadStartDate(data)
{
$('#Start').val(data);
}
function getEndDate()
{
google.script.run
.withSuccessHandler(loadEndDate)
.getEndDate();
}
function loadEndDate(data)
{
$('#End').val(data);
}
function getDifference()
{
var Start=$('#Start').val();
var End=$('#End').val();
$('#Diff').css('background-color','#ffff00');
google.script.run
.withSuccessHandler(loadDifference)
.calcTimeDifference(Start,End);
}
function loadDifference(data)
{
var A=data.split('\n')
var diff=A[1];
$('#Diff').val(diff);
$('#Diff').css('background-color','#ffffff');
}
function sendTimeStamp()
{
var culr='#ffffff';
var type='TimeStamp';
var txt='TimeStamp';
var obj={'type':type,'text':txt,'color':culr};
google.script.run.dispText(obj);
}
console.log("My code");
</script>
<style>
div.scroll{background-color: #ffffff;width: 260px;height: 250px;overflow-y:scroll;display:none;margin:0 0 0 5px;}
.type{color:#ff0000;font-weight:bold;}
.note{font-weight:500;}
body{border:1px solid #000;padding:5px;width:300px;background-color:#ffffff}
#clrset,#lstcntl,#timediff{border:1px solid #000;padding:5px;}
</style>
</head>
<body>
<div id="clrset">
<strong>Color Controls</strong>
<br /><input id="btn1" type="button" value="Hot" onClick="setBackground('#f4cccc')"/>
<input id="btn2" type="button" value="Hold" onClick="setBackground('#fff2cc')"/>
<input id="btn3" type="button" value="Done" onClick="markDone()" />
<input id="btn4" type="button" value="Clear" onClick="setBackground('#ffffff')"/>
</div>
<div id="lstcntl">
<strong>List Controls</strong>
<br /><input id="btn8" type="button" value="View HotList" onClick="showHotList();" style="margin:5px 0;" />
<input id="btn5" type="button" value="Email HotList" onClick="sendHotList();" style="margin:5px 0;" />
<input id="btn6" type="button" value="Email Last 7" onClick="sendLastSeven();" style="margin:5px 0;" />
</div>
<div id="timediff">
<strong>Time Difference</strong>
<br /><input type="button" id="btn7" value="StartDate" onClick="getStartDate();" style="margin:5px 0;" />
<input type="text" id="Start" placeholder="Start Date" size="15" />
<br /><input type="button" id="btn8" value="EndDate" onClick="getEndDate();" style="margin:5px 0;" />
<input type="text" id="End" placeholder="End Date" size="15" />
<br /><input type="button" id="btn9" value="Difference" onClick="getDifference();" style="margin:5px 0;" />
<input type="text" id="Diff" size="15" placeholder="dd:hh:mm:ss" />
<br /><input type="button" id="btn7" value="TimeStamp" onClick="sendTimeStamp()" />
</div>
<br /><div id="hotbox" class="scroll"></div>
</body>
</html>
That's it. That's the entire code for this example. You select a topic with the drop down selection tool. You click on the text area and say your note into Siri's microphone and wa la text appears right out of thin air. Nothing could be easier. When you press the submit button the textarea background turns yellow and when the text is cleared and screen returns to white the note is now on your spreadsheet in the Notes Sheet.