This tool adds utm_campaign=deveco_gdemembers and utm_source=deveco to your current browser tab instantly.
It is a simple process.
- Right-click your Bookmarks Bar and select Add Page or Bookmark Manager.
| /** | |
| * CONFIGURATION | |
| * 1. Replace the API key below or set it in Project Settings > Script Properties | |
| * 2. Ensure you have the Drive API service enabled in your Apps Script project. | |
| * 3. This script should be container-bound to a Google Doc. | |
| */ | |
| const GEMINI_API_KEY = "YOUR_API_KEY_HERE"; | |
| /** | |
| * Main function to run the process: |
This is a feature request to give developers more options to configure the allow attribute for iframes generated by HtmlService.
The immediate use case is to enable on-device AI capabilities like Gemini Nano, which requires the host iframe to include the allow="language-model" attribute to grant access to the Prompt API, as outlined in recent Chrome AI announcements. Without this, it's currently impossible to build Workspace Add-ons that leverage these new browser features.
Currently, add-on iframes are served with an extensive list of permissions (e.g., camera, geolocation, microphone), which demonstrates that a permissions framework is already in place. To provide developers with control, we suggest a new method for the HtmlOutput class, such as .setIframeAllow(permissionString). This new method could operate on a list of Google-approved permission strings, ensuring that only safe
| function createDummyFoldersWithNesting() { | |
| // Get the starting point for the dummy folder structure | |
| // Replace with your desired folder ID or use 'root' to start in the root of your My Drive | |
| const rootFolder = DriveApp.getFolderById("YOUR_FOLDER_ID"); | |
| // Configuration for the dummy structure | |
| const maxNestingLevel = 3; // How many levels deep the structure will go | |
| const maxFoldersPerLevel = 5; // Maximum number of folders to create in each level | |
| const maxFilesPerFolder = 5; // Maximum number of files to create in each folder | |
| const fileFolderPrefix = 'Dummy' // Text added to the start of all folders/files |
| /** | |
| * This library includes software components derived from the following projects: | |
| * [ChatGPTApp] (https://github.com/scriptit-fr/ChatGPTApp) | |
| * [Google AI JavaScript SDK] (https://github.com/google/generative-ai-js/) | |
| * | |
| * These components are licensed under the Apache License 2.0. | |
| * A copy of the license can be found in the LICENSE file. | |
| */ | |
| /** |
| function main(){ | |
| console.log("Run in memory tests") | |
| inMemory(); | |
| console.log("Run in cache tests") | |
| withCache(); | |
| } | |
| // From https://medium.com/@saravanaeswari22/memorization-in-javascript-f312d66402b2 | |
| const memoize = (func) => { |
| // @OnlyCurrentDoc | |
| const FOLDER_ID = 'YOUR_FOLDER_ID'; // OR 'root' if you want your entire My Drive | |
| /** | |
| * Method One: Using built-in DriveApp / file iterator | |
| */ | |
| function generateFolderFilesDriveApp() { | |
| try { | |
| const folderId = FOLDER_ID; | |
| const parentFolder = (folderId === 'root') ? DriveApp.getRootFolder() : DriveApp.getFolderById(folderId); |
This is a sample script for retrieving and parsing the XML data from Google Workspace Update Blog and putting it to Google Spreadsheet using Google Apps Script.
At Google Workspace Update Blog, the XML data is provided. By this, the retrieved XML data is parsed with XmlService, and the data is put to Google Spreadsheet. Recently, I got a request for this. So I created this sample script. When this was useful for your situation, I'm glad.
Update: Modified version of the script which keeps inserting new posts after the header row.
| /** | |
| * @file A sample showing how to format date/time values in Apps Script so that they appear in the | |
| * user's timezone. View a working version here: | |
| * https://docs.google.com/spreadsheets/d/1t_ur0wMw80AXaFkpBXmYclLfGm_kDccYcD5LAGoBkrQ/edit | |
| */ | |
| /** | |
| * Add menu item after the spreadsheet opens. | |
| */ | |
| function onOpen() { |
| year | questions | answers | views | |
|---|---|---|---|---|
| 2009 | 1 | 4 | 23934 | |
| 2010 | 51 | 129 | 651431 | |
| 2011 | 72 | 141 | 836327 | |
| 2012 | 1879 | 3186 | 8213291 | |
| 2013 | 2601 | 3837 | 9766045 | |
| 2014 | 2758 | 3802 | 7800393 | |
| 2015 | 2779 | 3703 | 6018356 | |
| 2016 | 2885 | 3615 | 5284099 | |
| 2017 | 3895 | 4414 | 5246554 |