SYMBOL INDEX (357 symbols across 75 files) FILE: .github/scripts/biome-gs.ts function findGsFiles (line 24) | async function findGsFiles( function main (line 50) | async function main() { FILE: .github/scripts/check-gs.ts constant TEMP_ROOT (line 33) | const TEMP_ROOT = ".tsc_check"; type Project (line 35) | interface Project { type CheckResult (line 41) | interface CheckResult { function findFiles (line 48) | function findFiles( function findProjectRoots (line 70) | function findProjectRoots(rootDir: string): string[] { function createProjects (line 74) | function createProjects( function checkProject (line 135) | async function checkProject( function main (line 195) | async function main() { FILE: ai/autosummarize/gemini.js function scriptPropertyWithDefault (line 17) | function scriptPropertyWithDefault(key, defaultValue = undefined) { constant VERTEX_AI_LOCATION (line 26) | const VERTEX_AI_LOCATION = scriptPropertyWithDefault( constant MODEL_ID (line 30) | const MODEL_ID = scriptPropertyWithDefault("model_id", "gemini-pro-visio... constant SERVICE_ACCOUNT_KEY (line 31) | const SERVICE_ACCOUNT_KEY = scriptPropertyWithDefault("service_account_k... function getAiSummary (line 42) | function getAiSummary(parts, options = {}) { function credentialsForVertexAI (line 100) | function credentialsForVertexAI() { FILE: ai/autosummarize/main.js function onOpen (line 22) | function onOpen(e) { function onInstall (line 39) | function onInstall(e) { function showSidebar (line 46) | function showSidebar() { function removeAllSummaries (line 58) | function removeAllSummaries() { function doAutoSummarizeAI (line 74) | function doAutoSummarizeAI( FILE: ai/autosummarize/summarize.js function exportFile (line 24) | function exportFile(fileId, targetType = "application/pdf") { function downloadFile (line 45) | function downloadFile(fileId) { function summarizeFiles (line 62) | function summarizeFiles( FILE: ai/custom-func-ai-agent/AiVertex.js constant LOCATION (line 17) | const LOCATION = constant GEMINI_MODEL_ID (line 19) | const GEMINI_MODEL_ID = constant REASONING_ENGINE_ID (line 21) | const REASONING_ENGINE_ID = PropertiesService.getScriptProperties().getP... constant SERVICE_ACCOUNT_KEY (line 24) | const SERVICE_ACCOUNT_KEY = PropertiesService.getScriptProperties().getP... function requestLlmAuditorAdkAiAgent (line 33) | function requestLlmAuditorAdkAiAgent(statement) { function requestOutputFormatting (line 55) | function requestOutputFormatting(prompt) { function credentialsForVertexAI (line 101) | function credentialsForVertexAI() { FILE: ai/custom-func-ai-agent/Code.js constant DEFAULT_OUTPUT_FORMAT (line 17) | const DEFAULT_OUTPUT_FORMAT = function FACT_CHECK (line 34) | function FACT_CHECK(statement, outputFormat = DEFAULT_OUTPUT_FORMAT) { FILE: ai/custom-func-ai-studio/Code.js function gemini (line 25) | function gemini(range, prompt) { FILE: ai/custom-func-ai-studio/gemini.js function getAiSummary (line 25) | function getAiSummary(prompt) { FILE: ai/custom_func_vertex/Code.js function gemini (line 25) | function gemini(range, prompt) { FILE: ai/custom_func_vertex/aiVertex.js constant VERTEX_AI_LOCATION (line 17) | const VERTEX_AI_LOCATION = constant MODEL_ID (line 19) | const MODEL_ID = constant SERVICE_ACCOUNT_KEY (line 21) | const SERVICE_ACCOUNT_KEY = PropertiesService.getScriptProperties().getP... function getAiSummary (line 32) | function getAiSummary(prompt) { function credentialsForVertexAI (line 98) | function credentialsForVertexAI() { FILE: ai/devdocs-link-preview/Cards.js function buildCard (line 24) | function buildCard(pageTitle, summary, showRating = true) { function buildErrorCard (line 88) | function buildErrorCard() { FILE: ai/devdocs-link-preview/Helpers.js function scriptPropertyWithDefault (line 20) | function scriptPropertyWithDefault(key, defaultValue = undefined) { FILE: ai/devdocs-link-preview/Main.js function onLinkPreview (line 23) | function onLinkPreview(event) { function onRatingClicked (line 53) | function onRatingClicked(e) { FILE: ai/devdocs-link-preview/Vertex.js constant VERTEX_AI_LOCATION (line 17) | const VERTEX_AI_LOCATION = scriptPropertyWithDefault( constant MODEL_ID (line 21) | const MODEL_ID = scriptPropertyWithDefault("model_id", "gemini-2.5-flash"); constant SERVICE_ACCOUNT_KEY (line 22) | const SERVICE_ACCOUNT_KEY = scriptPropertyWithDefault("service_account_k... function getPageSummary (line 27) | function getPageSummary(targetUrl) { function credentialsForVertexAI (line 98) | function credentialsForVertexAI() { FILE: ai/drive-rename/ai.js constant VERTEX_AI_LOCATION (line 17) | const VERTEX_AI_LOCATION = constant MODEL_ID (line 19) | const MODEL_ID = constant SERVICE_ACCOUNT_KEY (line 21) | const SERVICE_ACCOUNT_KEY = PropertiesService.getScriptProperties().getP... constant STANDARD_PROMPT (line 25) | const STANDARD_PROMPT = ` function getAiSummary (line 44) | function getAiSummary(prompt) { function credentialsForVertexAI (line 92) | function credentialsForVertexAI() { FILE: ai/drive-rename/drive.js function renameFile (line 23) | function renameFile(e) { function updateCard (line 52) | function updateCard(e) { function getDocumentBody (line 79) | function getDocumentBody(id) { function getDocAPIBody (line 93) | function getDocAPIBody(id) { function moveFileToTrash (line 122) | function moveFileToTrash(e) { FILE: ai/drive-rename/main.js function onHomepageOpened (line 22) | function onHomepageOpened(e) { function onDriveItemsSelected (line 41) | function onDriveItemsSelected(e) { function onCardUpdate (line 58) | function onCardUpdate(e) { FILE: ai/drive-rename/ui.js constant ICO_HEADER (line 17) | const ICO_HEADER = constant ICON_RENAME (line 19) | const ICON_RENAME = constant ICON_RETRY (line 21) | const ICON_RETRY = constant ICON_DELETE (line 23) | const ICON_DELETE = function buildSelectionPage (line 31) | function buildSelectionPage(e) { function buildHeader (line 218) | function buildHeader() { function buildHomePage (line 231) | function buildHomePage() { FILE: ai/standup-chat-app/db.js class DB (line 37) | class DB { method constructor (line 41) | constructor(spreadsheetId) { method sheet (line 49) | get sheet() { method last (line 65) | get last() { method append (line 74) | append(message) { function testDB (line 82) | function testDB() { FILE: ai/standup-chat-app/gemini.js function generateContent (line 25) | function generateContent(text, API_KEY) { FILE: ai/standup-chat-app/main.js constant API_KEY (line 20) | const API_KEY = PropertiesService.getScriptProperties().getProperty("API... constant SPREADSHEET_ID (line 21) | const SPREADSHEET_ID = constant SPACE_NAME (line 23) | const SPACE_NAME = constant SUMMARY_HEADER (line 26) | const SUMMARY_HEADER = "\n\n*Gemini Generated Summary*\n\n"; function standup (line 34) | function standup() { function summarize (line 64) | function summarize() { function getSenderDisplayName (line 113) | function getSenderDisplayName(sender) { function linkToThread (line 132) | function linkToThread(message) { FILE: ai/standup-chat-app/memoize.js function hash (line 26) | function hash(str, algorithm = Utilities.DigestAlgorithm.MD5) { function memoize (line 49) | function memoize(func, ttl = 600, cache = CacheService.getScriptCache()) { FILE: apps-script/execute/target.js function getFoldersUnderRoot (line 22) | function getFoldersUnderRoot() { FILE: solutions/add-on/book-smartchip/Code.js function getBook (line 17) | function getBook(id) { function bookLinkPreview (line 24) | function bookLinkPreview(event) { FILE: solutions/add-on/share-macro/Code.js function shareMacro_ (line 27) | function shareMacro_(sourceScriptId, targetSpreadsheetUrl) { constant APPS_SCRIPT_API (line 48) | const APPS_SCRIPT_API = { FILE: solutions/add-on/share-macro/UI.js constant ADDON_LOGO (line 18) | const ADDON_LOGO = function onHomepage (line 25) | function onHomepage(e) { function createSelectionCard (line 39) | function createSelectionCard(e, sourceScriptId, targetSpreadsheetUrl, er... function onClickFunction_ (line 164) | function onClickFunction_(e) { function buildSuccessCard (line 213) | function buildSuccessCard(e, targetSpreadsheetUrl) { FILE: solutions/automations/agenda-maker/Code.js function checkFolder (line 25) | function checkFolder() { function getTemplateId (line 47) | function getTemplateId(folderId) { function onCalendarChange (line 117) | function onCalendarChange() { function setUp (line 189) | function setUp() { FILE: solutions/automations/aggregate-document-content/Code.js constant APP_TITLE (line 26) | const APP_TITLE = "Document summary importer"; constant PROJECT_FOLDER_NAME (line 27) | const PROJECT_FOLDER_NAME = "Project statuses"; constant FIND_TEXT_KEYWORDS (line 31) | const FIND_TEXT_KEYWORDS = "Summary"; constant APP_STYLE (line 32) | const APP_STYLE = DocumentApp.ParagraphHeading.HEADING3; constant TEXT_COLOR (line 33) | const TEXT_COLOR = "#2e7d32"; function performImport (line 41) | function performImport() { function getContent (line 124) | function getContent(body) { function getFiles (line 172) | function getFiles(folder) { FILE: solutions/automations/aggregate-document-content/Menu.js constant MENU (line 21) | const MENU = { function onOpen (line 33) | function onOpen() { function aboutApp (line 54) | function aboutApp() { FILE: solutions/automations/aggregate-document-content/Setup.js function setupConfig (line 28) | function setupConfig(includeSamples) { function createSampleFile (line 54) | function createSampleFile() { function setupWithSamples (line 99) | function setupWithSamples() { function createGoogleDoc (line 140) | function createGoogleDoc(document, folder, duplicate) { FILE: solutions/automations/aggregate-document-content/Utilities.js function getFolderByName_ (line 28) | function getFolderByName_(folderName) { function test_getFolderByName (line 55) | function test_getFolderByName() { FILE: solutions/automations/bracket-maker/Code.js constant RANGE_PLAYER1 (line 20) | const RANGE_PLAYER1 = "FirstPlayer"; constant SHEET_PLAYERS (line 21) | const SHEET_PLAYERS = "Players"; constant SHEET_BRACKET (line 22) | const SHEET_BRACKET = "Bracket"; constant CONNECTOR_WIDTH (line 23) | const CONNECTOR_WIDTH = 15; function onOpen (line 28) | function onOpen() { function createBracket (line 38) | function createBracket() { function setBracketItem_ (line 127) | function setBracketItem_(rng, players) { function setConnector_ (line 140) | function setConnector_(sheet, rng) { FILE: solutions/automations/calendar-timesheet/Code.js function run (line 238) | function run() { FILE: solutions/automations/content-signup/Code.js constant EMAIL_TEMPLATE_DOC_URL (line 22) | const EMAIL_TEMPLATE_DOC_URL = constant EMAIL_SUBJECT (line 25) | const EMAIL_SUBJECT = "Hello, here is the content you requested"; function installTrigger (line 42) | function installTrigger() { function onFormSubmit (line 54) | function onFormSubmit(e) { function createEmailBody (line 101) | function createEmailBody(name, topics) { function docToHtml (line 124) | function docToHtml(docId) { FILE: solutions/automations/course-feedback-response/Code.js function onOpen (line 23) | function onOpen() { function installTrigger (line 33) | function installTrigger() { function onFormSubmit (line 45) | function onFormSubmit(e) { function createEmailBody (line 65) | function createEmailBody(responses) { function createDraft (line 89) | function createDraft(timestamp, email, emailBody) { FILE: solutions/automations/employee-certificate/Code.js function onOpen (line 27) | function onOpen() { function createCertificates (line 40) | function createCertificates() { function sendCertificates (line 96) | function sendCertificates() { FILE: solutions/automations/equipment-requests/Code.js constant REQUEST_NOTIFICATION_EMAIL (line 21) | const REQUEST_NOTIFICATION_EMAIL = "request_intake@example.com"; constant AVAILABLE_LAPTOPS (line 24) | const AVAILABLE_LAPTOPS = [ constant AVAILABLE_DESKTOPS (line 30) | const AVAILABLE_DESKTOPS = [ constant AVAILABLE_MONITORS (line 37) | const AVAILABLE_MONITORS = ['Single 27"', 'Single 32"', 'Dual 24"']; function onOpen (line 44) | function onOpen() { function setup_ (line 55) | function setup_() { function cleanup_ (line 91) | function cleanup_() { function onFormSubmit_ (line 107) | function onFormSubmit_(event) { function processCompletedItems_ (line 136) | function processCompletedItems_() { function sendNewEquipmentRequestEmail_ (line 162) | function sendNewEquipmentRequestEmail_(request) { function sendEquipmentRequestCompletedEmail_ (line 181) | function sendEquipmentRequestCompletedEmail_(request) { function mapResponse_ (line 199) | function mapResponse_(response) { FILE: solutions/automations/event-session-signup/Code.js function onOpen (line 23) | function onOpen() { function setUpConference_ (line 35) | function setUpConference_() { function setUpCalendar_ (line 62) | function setUpCalendar_(values, range) { function joinDateAndTime_ (line 90) | function joinDateAndTime_(date_, time) { function setUpForm_ (line 105) | function setUpForm_(ss, values) { function onFormSubmit (line 145) | function onFormSubmit(e) { function sendInvites_ (line 179) | function sendInvites_(user, response) { function sendDoc_ (line 192) | function sendDoc_(user, response) { function resetProperties (line 225) | function resetProperties() { FILE: solutions/automations/feedback-sentiment-analysis/code.js constant COLUMN_NAME (line 24) | const COLUMN_NAME = { function onOpen (line 33) | function onOpen() { function markEntitySentiment (line 45) | function markEntitySentiment() { function retrieveEntitySentiment (line 133) | function retrieveEntitySentiment(line) { FILE: solutions/automations/folder-creation/Code.js function createNewFolder (line 21) | function createNewFolder(project) { FILE: solutions/automations/generate-pdfs/Code.js constant EMAIL_OVERRIDE (line 21) | const EMAIL_OVERRIDE = false; constant EMAIL_ADDRESS_OVERRIDE (line 22) | const EMAIL_ADDRESS_OVERRIDE = "test@example.com"; constant APP_TITLE (line 25) | const APP_TITLE = "Generate and send PDFs"; constant OUTPUT_FOLDER_NAME (line 26) | const OUTPUT_FOLDER_NAME = "Customer PDFs"; constant DUE_DATE_NUM_DAYS (line 27) | const DUE_DATE_NUM_DAYS = 15; constant CUSTOMERS_SHEET_NAME (line 30) | const CUSTOMERS_SHEET_NAME = "Customers"; constant PRODUCTS_SHEET_NAME (line 31) | const PRODUCTS_SHEET_NAME = "Products"; constant TRANSACTIONS_SHEET_NAME (line 32) | const TRANSACTIONS_SHEET_NAME = "Transactions"; constant INVOICES_SHEET_NAME (line 33) | const INVOICES_SHEET_NAME = "Invoices"; constant INVOICE_TEMPLATE_SHEET_NAME (line 34) | const INVOICE_TEMPLATE_SHEET_NAME = "Invoice Template"; constant EMAIL_SUBJECT (line 37) | const EMAIL_SUBJECT = "Invoice Notification"; constant EMAIL_BODY (line 38) | const EMAIL_BODY = "Hello!\rPlease see the attached PDF document."; function processDocuments (line 46) | function processDocuments() { function createInvoiceForCustomer (line 90) | function createInvoiceForCustomer( function clearTemplateSheet (line 169) | function clearTemplateSheet() { function createPDF (line 190) | function createPDF(ssId, sheet, pdfName) { function sendEmails (line 218) | function sendEmails() { function dataRangeToObject (line 254) | function dataRangeToObject(sheet) { function getObjects (line 265) | function getObjects(data, keys) { function createObjectKeys (line 285) | function createObjectKeys(keys) { function isCellEmpty (line 289) | function isCellEmpty(cellData) { FILE: solutions/automations/generate-pdfs/Menu.js function onOpen (line 31) | function onOpen(e) { FILE: solutions/automations/generate-pdfs/Utilities.js function getFolderByName_ (line 27) | function getFolderByName_(folderName) { function test_getFolderByName (line 54) | function test_getFolderByName() { FILE: solutions/automations/import-csv-sheets/Code.js constant APP_TITLE (line 25) | const APP_TITLE = "Trigger-driven CSV import [App Script Sample]"; constant APP_FOLDER (line 26) | const APP_FOLDER = "[App Script sample] Import CSVs"; constant SOURCE_FOLDER (line 27) | const SOURCE_FOLDER = "Inbound CSV Files"; constant PROCESSED_FOLDER (line 28) | const PROCESSED_FOLDER = "Processed CSV Files"; constant SHEET_REPORT_NAME (line 29) | const SHEET_REPORT_NAME = "Import CSVs"; constant CSV_HEADER_EXIST (line 32) | const CSV_HEADER_EXIST = true; constant HANDLER_FUNCTION (line 33) | const HANDLER_FUNCTION = "updateApplicationSheet"; function installTrigger (line 41) | function installTrigger() { function updateApplicationSheet (line 73) | function updateApplicationSheet() { function processCsv_ (line 155) | function processCsv_(objSpreadSheet, csvFile) { FILE: solutions/automations/import-csv-sheets/SampleData.js constant SAMPLE_DATA (line 24) | const SAMPLE_DATA = { function getHeadings (line 136) | function getHeadings() { function getCSVFilesData (line 147) | function getCSVFilesData() { function test_getHeadings (line 174) | function test_getHeadings() { function test_getCSVFilesData (line 180) | function test_getCSVFilesData() { FILE: solutions/automations/import-csv-sheets/SetupSample.js constant INCLUDE_SAMPLE_DATA_FILES (line 24) | const INCLUDE_SAMPLE_DATA_FILES = true; function setupSample (line 36) | function setupSample() { function setupPrimarySpreadsheet_ (line 79) | function setupPrimarySpreadsheet_(folderAppPrimary) { function removeSample (line 106) | function removeSample() { FILE: solutions/automations/import-csv-sheets/Utilities.js function getSpreadSheet_ (line 29) | function getSpreadSheet_(fileName, objFolder) { function fileExists_ (line 53) | function fileExists_(fileName, objFolder) { function getFolder_ (line 71) | function getFolder_(folderName) { function getApplicationFolder_ (line 98) | function getApplicationFolder_() { function test_getFolderByName (line 122) | function test_getFolderByName() { FILE: solutions/automations/mail-merge/Code.js constant RECIPIENT_COL (line 28) | const RECIPIENT_COL = "Recipient"; constant EMAIL_SENT_COL (line 29) | const EMAIL_SENT_COL = "Email Sent"; function onOpen (line 34) | function onOpen() { function sendEmails (line 44) | function sendEmails(subjectLine, sheet = SpreadsheetApp.getActiveSheet()) { FILE: solutions/automations/news-sentiment/Code.js function onOpen (line 54) | function onOpen() { function showNewsPrompt (line 65) | function showNewsPrompt() { function analyzeNewsHeadlines (line 93) | function analyzeNewsHeadlines() { function getHeadlinesArray (line 115) | function getHeadlinesArray() { function getSentiments (line 145) | function getSentiments() { function retrieveSentiment (line 187) | function retrieveSentiment(text) { function reformatSheet (line 215) | function reformatSheet() { function getFace (line 228) | function getFace(value) { function getColor (line 243) | function getColor(value) { function scrub (line 259) | function scrub(text) { FILE: solutions/automations/offsite-activity-signup/Code.js constant NUM_ITEMS_TO_RANK (line 20) | const NUM_ITEMS_TO_RANK = 5; constant ACTIVITIES_PER_PERSON (line 21) | const ACTIVITIES_PER_PERSON = 2; constant NUM_TEST_USERS (line 22) | const NUM_TEST_USERS = 150; function onOpen (line 27) | function onOpen() { function buildForm_ (line 40) | function buildForm_() { function assignActivities_ (line 91) | function assignActivities_() { function assignWithRandomPriority_ (line 108) | function assignWithRandomPriority_( function makeChoice_ (line 131) | function makeChoice_(attendee, activitiesById) { function checkAvailability_ (line 154) | function checkAvailability_(attendee, activity) { function writeAttendeeAssignments_ (line 174) | function writeAttendeeAssignments_(ss, attendees) { function writeActivityRosters_ (line 201) | function writeActivityRosters_(ss, activities) { function loadActivitySchedule_ (line 222) | function loadActivitySchedule_(ss) { function loadAttendeeResponses_ (line 268) | function loadAttendeeResponses_(ss, allActivityIds) { function generateTestData_ (line 315) | function generateTestData_() { function findOrCreateSheetByName_ (line 351) | function findOrCreateSheetByName_(ss, name) { function bulkAppendRows_ (line 365) | function bulkAppendRows_(sheet, rows) { function shuffleArray_ (line 379) | function shuffleArray_(array) { function toOrdinal_ (line 398) | function toOrdinal_(i) { function findResponseSheetForForm_ (line 419) | function findResponseSheetForForm_(ss) { function fillArray_ (line 441) | function fillArray_(arr, length, value) { function range_ (line 455) | function range_(start, end) { function transpose_ (line 474) | function transpose_(arr, fillValue) { FILE: solutions/automations/tax-loss-harvest-alerts/Code.js function checkLosses (line 23) | function checkLosses() { FILE: solutions/automations/timesheets/Code.js constant COLUMN_NUMBER (line 21) | const COLUMN_NUMBER = { constant APPROVED_EMAIL_SUBJECT (line 33) | const APPROVED_EMAIL_SUBJECT = "Weekly Timesheet APPROVED"; constant REJECTED_EMAIL_SUBJECT (line 34) | const REJECTED_EMAIL_SUBJECT = "Weekly Timesheet NOT APPROVED"; constant APPROVED_EMAIL_MESSAGE (line 35) | const APPROVED_EMAIL_MESSAGE = "Your timesheet has been approved."; constant REJECTED_EMAIL_MESSAGE (line 36) | const REJECTED_EMAIL_MESSAGE = "Your timesheet has not been approved."; function onOpen (line 41) | function onOpen() { function columnSetup (line 57) | function columnSetup() { function addCalculatePayColumn (line 78) | function addCalculatePayColumn(sheet, beginningRow) { function addApprovalColumn (line 101) | function addApprovalColumn(sheet, beginningRow, numRows) { function addNotifiedColumn (line 128) | function addNotifiedColumn(sheet, beginningRow, numRows) { function updateNotifiedStatus (line 156) | function updateNotifiedStatus(sheet, notifiedValues, i, beginningRow) { function checkApprovedStatusToNotify (line 166) | function checkApprovedStatusToNotify() { function setUpForm (line 219) | function setUpForm() { function onFormSubmit (line 249) | function onFormSubmit(event) { function getResponsesByName (line 276) | function getResponsesByName(response) { FILE: solutions/automations/upload-files/Code.js constant APP_TITLE (line 25) | const APP_TITLE = "Upload files to Drive from Forms"; constant APP_FOLDER_NAME (line 26) | const APP_FOLDER_NAME = "Upload files to Drive (File responses)"; constant APP_SUBFOLDER_ITEM (line 29) | const APP_SUBFOLDER_ITEM = "Subfolder"; constant APP_SUBFOLDER_NONE (line 30) | const APP_SUBFOLDER_NONE = ""; function onFormSubmit (line 37) | function onFormSubmit(e) { function getSubFolder_ (line 97) | function getSubFolder_(objParentFolder, subFolderName) { FILE: solutions/automations/upload-files/Setup.js function setUp (line 26) | function setUp() { function getFolder_ (line 49) | function getFolder_(folderName) { function installTrigger_ (line 78) | function installTrigger_() { function removeTriggersAndScriptProperties (line 112) | function removeTriggersAndScriptProperties() { function deleteAllResponses (line 124) | function deleteAllResponses() { FILE: solutions/automations/vacation-calendar/Code.js constant TEAM_CALENDAR_ID (line 22) | const TEAM_CALENDAR_ID = "ENTER_TEAM_CALENDAR_ID_HERE"; constant GROUP_EMAIL (line 27) | const GROUP_EMAIL = "ENTER_GOOGLE_GROUP_EMAIL_HERE"; constant ONLY_DIRECT_MEMBERS (line 29) | const ONLY_DIRECT_MEMBERS = false; constant KEYWORDS (line 31) | const KEYWORDS = ["vacation", "ooo", "out of office", "offline"]; constant MONTHS_IN_ADVANCE (line 32) | const MONTHS_IN_ADVANCE = 3; function setup (line 37) | function setup() { function sync (line 51) | function sync() { function importEvent (line 92) | function importEvent(username, event) { function findEvents (line 129) | function findEvents(user, start, end, optSince) { function formatDateAsRFC3339 (line 170) | function formatDateAsRFC3339(date) { function getAllMembers (line 179) | function getAllMembers(groupEmail) { function getUsersFromGroups (line 205) | function getUsersFromGroups(groupEmails) { FILE: solutions/automations/youtube-tracker/Code.js constant EMAIL_ON (line 21) | const EMAIL_ON = "Y"; constant COLUMN_NAME (line 24) | const COLUMN_NAME = { function markVideos (line 35) | function markVideos() { function getVideoDetails (line 106) | function getVideoDetails(videoId) { function extractVideoIdFromUrl (line 116) | function extractVideoIdFromUrl(url) { function sendEmailNotificationTemplate (line 129) | function sendEmailNotificationTemplate(content, emailAddress) { FILE: solutions/custom-functions/calculate-driving-distance/Code.js function onOpen (line 28) | function onOpen() { function metersToMiles (line 48) | function metersToMiles(meters) { function drivingDistance (line 62) | function drivingDistance(origin, destination) { function prepareSheet_ (line 70) | function prepareSheet_() { function generateStepByStep_ (line 97) | function generateStepByStep_() { function setAlternatingRowBackgroundColors_ (line 211) | function setAlternatingRowBackgroundColors_(range, oddColor, evenColor) { function getDirections_ (line 235) | function getDirections_(origin, destination) { FILE: solutions/custom-functions/summarize-sheets-data/Code.js constant READ_ME_SHEET_NAME (line 28) | const READ_ME_SHEET_NAME = "ReadMe"; constant PM_SHEET_NAME (line 29) | const PM_SHEET_NAME = "Summary"; function getSheetsData (line 35) | function getSheetsData() { function filterByPosition (line 102) | function filterByPosition(array, find, position) { FILE: solutions/custom-functions/tier-pricing/Code.js function tierPrice (line 36) | function tierPrice(value, table) { FILE: solutions/editor-add-on/clean-sheet/Code.js constant APP_TITLE (line 21) | const APP_TITLE = "Clean sheet"; function deleteEmptyRows (line 32) | function deleteEmptyRows() { function deleteEmptyColumns (line 102) | function deleteEmptyColumns() { function cropSheet (line 173) | function cropSheet() { function fillDownData (line 205) | function fillDownData() { function showMessage (line 255) | function showMessage(message, caller) { FILE: solutions/editor-add-on/clean-sheet/Menu.js function onOpen (line 22) | function onOpen(e) { function onInstall (line 47) | function onInstall(e) { function aboutApp (line 55) | function aboutApp() { FILE: wasm/hello-world/src/lib.rs function hello (line 18) | pub fn hello(name: &str) -> JsValue { FILE: wasm/hello-world/src/main.js function main (line 17) | async function main() { FILE: wasm/hello-world/src/test.js function test (line 17) | async function test() { function assert (line 21) | async function assert(a, b, message) { function latency (line 30) | async function latency(func, iterations, argsFunc = () => []) { function benchmark (line 66) | async function benchmark() { function generateRandomString (line 77) | function generateRandomString(length = 1024) { FILE: wasm/hello-world/src/wasm.js function hello_ (line 22) | async function hello_(name) { FILE: wasm/image-add-on/src/add-on.js constant COLORS (line 17) | const COLORS = { function card (line 23) | async function card(items) { function onItemsSelectedTrigger (line 150) | async function onItemsSelectedTrigger(e) { function onRequestFileScopeButtonClicked (line 167) | function onRequestFileScopeButtonClicked(e) { function onFileScopeGrantedTrigger (line 174) | function onFileScopeGrantedTrigger(e) { function onHomePageTrigger (line 181) | function onHomePageTrigger() { function bytesToText (line 194) | function bytesToText(bytes) { function save (line 201) | async function save(...args) { function updateSettings (line 208) | async function updateSettings(e) { function persistSettings (line 223) | function persistSettings(settings) { function loadSettings (line 233) | function loadSettings() { function qualityToInt (line 244) | function qualityToInt(quality) { FILE: wasm/image-add-on/src/lib.rs function compress (line 18) | pub fn compress(data: &[u8], quality: u8, width: u32, height: u32) -> Js... FILE: wasm/image-add-on/src/main.js constant QUALITY (line 17) | const QUALITY = 80; function main (line 19) | async function main() { FILE: wasm/image-add-on/src/test.js function test (line 17) | async function test() {} function assert (line 19) | async function assert(a, b, message) { function latency (line 28) | async function latency(func, iterations, argsFunc = () => []) { function benchmark (line 64) | async function benchmark() { function generateRandomString (line 75) | function generateRandomString(length = 1024) { FILE: wasm/image-add-on/src/wasm.js function compress_ (line 17) | async function compress_(bytes, { quality, format, width, height }) { FILE: wasm/python/src/lib.rs function python (line 22) | pub fn python(source: &str, data: &JsValue) -> JsValue { function new (line 61) | fn new(message: JsValue) -> PyError; function serialize_exception (line 64) | fn serialize_exception(err: PyRef, vm: &VirtualMachine)... function serialize (line 68) | fn serialize(py_obj: &PyObjectRef, vm: &VirtualMachine) -> JsValue { function deserialize (line 73) | fn deserialize( FILE: wasm/python/src/main.js function PYTHON (line 25) | async function PYTHON(code = "args", ...args) { FILE: wasm/python/src/test.js function test (line 17) | async function test() {} function assert (line 19) | async function assert(a, b, message) { FILE: wasm/python/src/wasm.js function python_ (line 26) | async function python_(source, ...args) {