var BAR_ID = 'PROGRESS_BAR_ID'; var BAR_HEIGHT = 10; // px var presentation = SlidesApp.getActivePresentation(); function createBars() { var slides = presentation.getSlides(); deleteBars(); for (var i = 0; i < slides.length; ++i) { var ratioComplete = (i / (slides.length - 1)); var x = 0; var y = presentation.getPageHeight() - BAR_HEIGHT; var barWidth = presentation.getPageWidth() * ratioComplete; if (barWidth > 0) { var bar = slides[i].insertShape(SlidesApp.ShapeType.RECTANGLE, x, y, barWidth, BAR_HEIGHT); bar.getBorder().setTransparent(); bar.setLinkUrl(BAR_ID); } } }
function onMessage(e) { var bot = e.message.annotations[0].userMention.user.displayName; var loc = encodeURI(e.message.text.substring(bot.length+2)); var mapClick = { "openLink": { "url": "https://google.com/maps/search/?api=1&query=" + loc } }; return { // see JSON payload in the documentation link above }; }
<!doctype html> <html ⚡4email> <head> <meta charset="utf-8"> <script async src="https://cdn.ampproject.org/v0.js"><'/script> <!-- The AMP4email boilerplate. --> <style amp4email-boilerplate>body{visibility:hidden}</style> <script async custom-element="amp-carousel" src="https://cdn.ampproject.org/v0/amp-carousel-0.1.js"></script> <script async custom-element="amp-selector" src="https://cdn.ampproject.org/v0/amp-selector-0.1.js"></script> <script async custom-element="amp-bind" src="https://cdn.ampproject.org/v0/amp-bind-0.1.js"></script> <script async custom-element="amp-form" src="https://cdn.ampproject.org/v0/amp-form-0.1.js"></script> <script async custom-template="amp-mustache" src="https://cdn.ampproject.org/v0/amp-mustache-0.1.js"></script> <style amp-custom> html{font-family: 'Roboto';} ... </style> </head> <body> <h2>Hello dear user,</h2> <div class="photo-gallery"> <div class="text">Photos from your latest trips: <span [text]="+selectedSlide + 1">1</span>/4</div> <amp-selector layout="container" name="carousel-selector"...> <amp-carousel controls width="430" height="80"> <amp-img ...></amp-img> ... </amp-carousel> </amp-selector> <amp-carousel ...> <amp-img ...></amp-img> ... </amp-carousel> <div class="trip-location">Please rate your trip location:</div> <form id="rating" class="p2" method="post" ...> <fieldset class="rating"> <input name="rating" type="radio" id="rating1" value="1" .../> <label for="rating1" title="1 stars">★</label> ... </fieldset> <div submit-success> <template type="amp-mustache"> <div class="text">Thanks for rating {{rating}} star(s)!</div> </template> </div> </form> </div> </body> </html> [Full example in AmpByExample’s Playground]
"conferenceData": { "entryPoints": [ { "entryPointType": "video", "uri": "https://meet.google.com/wix-pvpt-njj", "label": "meet.google.com/wix-pvpt-njj" }, { "entryPointType": "more", "uri": "https://tel.meet/wix-pvpt-njj?pin=1701789652855", "pin": "1701789652855" }, { "entryPointType": "phone", "uri": "tel:+44-20-3873-7654", "label": "+44 20 3873 7654", "pin": "6054226" } ], "conferenceSolution": { "key": { "type": "hangoutsMeet" }, "name": "Hangouts Meet", "iconUri": "https://lh5.googleusercontent.com/proxy/bWvYBOb7O03a7HK5iKNEAPoUNPEXH1CHZjuOkiqxHx8OtyVn9sZ6Ktl8hfqBNQUUbCDg6T2unnsHx7RSkCyhrKgHcdoosAW8POQJm_ZEvZU9ZfAE7mZIBGr_tDlF8Z_rSzXcjTffVXg3M46v" }, "conferenceId": "wix-pvpt-njj", "signature": "ADwwud9tLfjGQPpT7bdP8f3bq3DS" }
var solution = event.conferenceData.conferenceSolution; var content = document.getElementById("content"); var text = document.createTextNode("Join " + solution.name); var icon = document.createElement("img"); icon.src = solution.iconUri; content.appendChild(icon); content.appendChild(text);
var eventPatch = { conferenceData: { createRequest: {requestId: "7qxalsvy0e"} } }; gapi.client.calendar.events.patch({ calendarId: "primary", eventId: "7cbh8rpc10lrc0ckih9tafss99", resource: eventPatch, sendNotifications: true, conferenceDataVersion: 1 }).execute(function(event) { console.log("Conference created for event: %s", event.htmlLink); });
"conferenceData": { "createRequest": { "requestId": "7qxalsvy0e", "conferenceSolutionKey": { "type": "hangoutsMeet" }, "status": { "statusCode": "pending" } } }
SlidesApp.getActivePresentation() .getSelection() .getCurrentPage() .insertImage(image);
IntegratedApp.insertImage(image);
var IntegratedApp = { // direct mapping to function createAddonMenu: SlidesApp.getUi().createAddonMenu.bind(SlidesApp.getUi()), // wrapper to create consistent behavior across apps insertImage: function(image) { return SlidesApp.getActivePresentation() .getSelection() .getCurrentPage() .insertImage(image); }, // app-specific strings phrases: { docType: 'Slide', name: 'Google Slides', nameWithDocType: 'Google Slides Presentation' } };
insertImage: function(image) { var sheet = SpreadsheetApp.getActiveSheet(); var cell = sheet.getActiveCell(); sheet.insertImage(image, cell.getColumn(), cell.getRow()); }
var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK); var image = slide.insertImage(link);
start
-- Start generating slides. -- TODO: Get Client Secrets TODO: Authorize TODO: Get Data from BigQuery TODO: Create Slides TODO: Open Slides -- Finished generating slides. --
WITH AllLicenses AS ( SELECT * FROM `bigquery-public-data.github_repos.licenses` ) SELECT license, COUNT(*) AS count, ROUND((COUNT(*) / (SELECT COUNT(*) FROM AllLicenses)) * 100, 2) AS percent FROM `bigquery-public-data.github_repos.licenses` GROUP BY license ORDER BY count DESC LIMIT 10
GET https://www.googleapis.com/admin/reports/v1/activity/users/userKey
GET https://www.googleapis.com/admin/reports/v1/activity/users/all/applications/drive
Person contactToCreate = new Person(); List names = new ArrayList<>(); names.add(new Name().setGivenName("John").setFamilyName("Doe")); contactToCreate.setNames(names); Person createdContact = peopleService.people().createContact(contactToCreate).execute();
String resourceName = "people/c12345"; // existing contact resource name Person contactToUpdate = peopleService.people().get(resourceName) .setPersonFields("names,emailAddresses") .execute(); List emailAddresses = new ArrayList<>(); emailAddresses.add(new EmailAddress().setValue("john.doe@gmail.com")); contactToUpdate.setEmailAddresses(emailAddresses); Person updatedContact = peopleService.people().updateContact(contactToUpdate) .setUpdatePersonFields("emailAddresses") .execute();
var TIMEZONE = "America/Los_Angeles"; var EVENT = { "start": {"dateTime": "2017-07-01T19:00:00", "timeZone": TIMEZONE}, "end": {"dateTime": "2017-07-01T22:00:00", "timeZone": TIMEZONE}, "recurrence": ["RRULE:FREQ=MONTHLY;INTERVAL=2;UNTIL=20171231"] };
GCAL.events().patch(calendarId='primary', eventId=EVENT_ID, sendNotifications=True, body=EVENT).execute()