1<!DOCTYPE html> 2<html lang="en-US" class="no-js"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <link rel="profile" href="https://gmpg.org/xfn/11"> 7 <link rel="pingback" href="https://www.benlcollins.com/xmlrpc.php"> 8
8<script> 9(function(html){html.className = html.className.replace(/\bno-js\b/,'js')})(document.documentElement); 10//# sourceURL=twentyfifteen_javascript_detection 11</script>
11 12<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 13 14 <!-- This site is optimized with the Yoast SEO plugin v28.5 - https://yoast.com/product/yoast-seo-wordpress/ --> 15 <title>Google Apps Script: A Beginner's Guide To Learn Apps Script</title> 16<link data-rocket-prefetch href="https://cdn.usefathom.com" rel="dns-prefetch"> 17<link data-rocket-prefetch href="https://js.sparkloop.app" rel="dns-prefetch"> 18<link data-rocket-prefetch href="https://www.youtube.com" rel="dns-prefetch"> 19<link data-rocket-prefetch href="https://benlcollins.kit.com" rel="dns-prefetch"><link rel="preload" data-rocket-preload as="image" href="https://www.benlcollins.com/wp-content/uploads/2026/03/courseIcon3.jpg" fetchpriority="high"> 20 <meta name="description" content="Learn Google Apps Script with this Beginner guide. See how to extend Google Sheets, Google Docs and other Workspace apps with Google Scripts." /> 21 <link rel="canonical" href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/" /> 22 <meta property="og:locale" content="en_US" /> 23 <meta property="og:type" content="article" /> 24 <meta property="og:title" content="Google Apps Script: A Beginner's Guide To Learn Apps Script" /> 25 <meta property="og:description" content="Learn Google Apps Script with this Beginner guide. See how to extend Google Sheets, Google Docs and other Workspace apps with Google Scripts." /> 26 <meta property="og:url" content="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/" /> 27 <meta property="article:published_time" content="2021-04-16T13:00:25+00:00" /> 28 <meta property="article:modified_time" content="2026-04-03T11:27:52+00:00" /> 29 <meta property="og:image" content="https://www.benlcollins.com/wp-content/uploads/2026/03/courseIcon3.jpg" /> 30 <meta name="author" content="Ben" /> 31 <meta name="twitter:card" content="summary_large_image" /> 32 <meta name="twitter:label1" content="Written by" /> 33 <meta name="twitter:data1" content="Ben" /> 34 <meta name="twitter:label2" content="Est. reading time" /> 35 <meta name="twitter:data2" content="15 minutes" /> 36
36<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#article","isPartOf":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/"},"author":{"name":"Ben","@id":"https:\/\/www.benlcollins.com\/#\/schema\/person\/f0e4d68f46fa8544bffb899f910ed469"},"headline":"Google Apps Script: A Beginner’s Guide","datePublished":"2021-04-16T13:00:25+00:00","dateModified":"2026-04-03T11:27:52+00:00","mainEntityOfPage":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/"},"wordCount":2397,"image":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.benlcollins.com\/wp-content\/uploads\/2026\/03\/courseIcon3.jpg","keywords":["Apps Script","dashboard","Google Sheets"],"articleSection":["Apps Script"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/","url":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/","name":"Google Apps Script: A Beginner's Guide To Learn Apps Script","isPartOf":{"@id":"https:\/\/www.benlcollins.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#primaryimage"},"image":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/www.benlcollins.com\/wp-content\/uploads\/2026\/03\/courseIcon3.jpg","datePublished":"2021-04-16T13:00:25+00:00","dateModified":"2026-04-03T11:27:52+00:00","author":{"@id":"https:\/\/www.benlcollins.com\/#\/schema\/person\/f0e4d68f46fa8544bffb899f910ed469"},"description":"Learn Google Apps Script with this Beginner guide. See how to extend Google Sheets, Google Docs and other Workspace apps with Google Scripts.","breadcrumb":{"@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#primaryimage","url":"https:\/\/www.benlcollins.com\/wp-content\/uploads\/2026\/03\/courseIcon3.jpg","contentUrl":"https:\/\/www.benlcollins.com\/wp-content\/uploads\/2026\/03\/courseIcon3.jpg","width":2726,"height":1533,"caption":"28 Days to Gemini Mastery Course"},{"@type":"BreadcrumbList","@id":"https:\/\/www.benlcollins.com\/apps-script\/google-apps-script-beginner-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.benlcollins.com\/"},{"@type":"ListItem","position":2,"name":"Google Apps Script: A Beginner’s Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.benlcollins.com\/#website","url":"https:\/\/www.benlcollins.com\/","name":"","description":"Educator and Google Developer Expert. Helping you navigate the world of spreadsheets & AI.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.benlcollins.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.benlcollins.com\/#\/schema\/person\/f0e4d68f46fa8544bffb899f910ed469","name":"Ben","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=96&d=mm&r=g","caption":"Ben"},"url":"https:\/\/www.benlcollins.com\/author\/benlcollins\/"}]}</script>
36 37 <!-- / Yoast SEO plugin. --> 38 39 40<link rel='dns-prefetch' href='//cdn.usefathom.com' /> 41 42<link rel="alternate" type="application/rss+xml" title=" » Feed" href="https://www.benlcollins.com/feed/" /> 43<link rel="alternate" type="application/rss+xml" title=" » Comments Feed" href="https://www.benlcollins.com/comments/feed/" /> 44<link rel="alternate" type="application/rss+xml" title=" » Google Apps Script: A Beginner’s Guide Comments Feed" href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/feed/" /> 45<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.benlcollins.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.benlcollins.com%2Fapps-script%2Fgoogle-apps-script-beginner-guide%2F" /> 46<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.benlcollins.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.benlcollins.com%2Fapps-script%2Fgoogle-apps-script-beginner-guide%2F&format=xml" /> 47<style id="wp-img-auto-sizes-contain-inline-css"> 48img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 49/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 50</style> 51<style id="wp-emoji-styles-inline-css"> 52 53 img.wp-smiley, img.emoji { 54 display: inline !important; 55 border: none !important; 56 box-shadow: none !important; 57 height: 1em !important; 58 width: 1em !important; 59 margin: 0 0.07em !important; 60 vertical-align: -0.1em !important; 61 background: none !important; 62 padding: 0 !important; 63 } 64/*# sourceURL=wp-emoji-styles-inline-css */ 65</style> 66<style id="wp-block-library-inline-css"> 67:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;
67--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 68 69/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 70</style> 71<style id="wp-block-heading-inline-css"> 72h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg} 73/*# sourceURL=https://www.benlcollins.com/wp-includes/blocks/heading/style.min.css */ 74</style> 75<style id="wp-block-latest-posts-inline-css"> 76.wp-block-latest-posts{box-sizing:border-box}.wp-block-latest-posts.alignleft{margin-right:2em}.wp-block-latest-posts.alignright{margin-left:2em}.wp-block-latest-posts.wp-block-latest-posts__list{list-style:none}.wp-block-latest-posts.wp-block-latest-posts__list li{clear:both;overflow-wrap:break-word}.wp-block-latest-posts.is-grid:not(.is-layout-grid){display:flex;flex-wrap:wrap}.wp-block-latest-posts.is-grid:not(.is-layout-grid) li{margin:0 1.25em 1.25em 0;width:100%}@media (min-width:600px){.wp-block-latest-posts.columns-2:not(.is-layout-grid) li{width:calc(50% - .625em)}.wp-block-latest-posts.columns-2:not(.is-layout-grid) li:nth-child(2n){margin-right:0}.wp-block-latest-posts.columns-3:not(.is-layout-grid) li{width:calc(33.33333% - .83333em)}.wp-block-latest-posts.columns-3:not(.is-layout-grid) li:nth-child(3n){margin-right:0}.wp-block-latest-posts.columns-4:not(.is-layout-grid) li{width:calc(25% - .9375em)}.wp-block-latest-posts.columns-4:not(.is-layout-grid) li:nth-child(4n){margin-right:0}.wp-block-latest-posts.columns-5:not(.is-layout-grid) li{width:calc(20% - 1em)}.wp-block-latest-posts.columns-5:not(.is-layout-grid) li:nth-child(5n){margin-right:0}.wp-block-latest-posts.columns-6:not(.is-layout-grid) li{width:calc(16.66667% - 1.04167em)}.wp-block-latest-posts.columns-6:not(.is-layout-grid) li:nth-child(6n){margin-right:0}}@media (max-width:600px){.wp-block-latest-posts-is-layout-grid[class*=columns-]:not
76(.has-native-responsive-grid){grid-template-columns:1fr}}:root :where(.wp-block-latest-posts.is-grid){padding:0}:root :where(.wp-block-latest-posts.wp-block-latest-posts__list){padding-left:0}.wp-block-latest-posts__post-author,.wp-block-latest-posts__post-date{display:block;font-size:.8125em}.wp-block-latest-posts__post-excerpt,.wp-block-latest-posts__post-full-content{margin-bottom:1em;margin-top:.5em}.wp-block-latest-posts__featured-image a{display:inline-block}.wp-block-latest-posts__featured-image img{height:auto;max-width:100%;width:auto}.wp-block-latest-posts__featured-image.alignleft{float:left;margin-right:1em}.wp-block-latest-posts__featured-image.alignright{float:right;margin-left:1em}.wp-block-latest-posts__featured-image.aligncenter{margin-bottom:1em;text-align:center} 77/*# sourceURL=https://www.benlcollins.com/wp-includes/blocks/latest-posts/style.min.css */ 78</style> 79 80<style id="classic-theme-styles-inline-css"> 81/*! This file is auto-generated */ 82.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 83/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 84</style> 85 86<link rel='stylesheet' id='convertkit-frontend-css' href='https://www.benlcollins.com/wp-content/plugins/convertkit/resources/frontend/css/frontend.css?ver=3.4.1' media='all' /> 87<style id="wp-block-button-inline-css"> 88.wp-block-button__link{align-content:center;box-sizing:border-box;cursor:pointer;display:inline-block;height:100%;text-align:center;word-break:break-word}.wp-block-button__link.aligncenter{text-align:center}.wp-block-button__link.alignright{text-align:right}:where(.wp-block-button__link){border-radius:9999px;box-shadow:none;padding:calc(.667em + 2px) calc(1.333em + 2px);text-decoration:none}.wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.wp-block-buttons>.wp-block-button.has-custom-width{max-width:none}.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{width:100%}.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{font-size:inherit}.wp-block-buttons>.wp-block-button[class*=wp-block-button__width]{width:calc(var(--wp--block-button--width)*1% - var(--wp--style--block-gap, .5em)*(1 - var(--wp--block-button--width)/100))}.wp-block-buttons>.wp-block-button.wp-block-button__width-25{width:calc(25% - var(--wp--style--block-gap, .5em)*.75)}.wp-block-buttons>.wp-block-button.wp-block-button__width-50{width:calc(50% - var(--wp--style--block-gap, .5em)*.5)}.wp-block-buttons>.wp-block-button.wp-block-button__width-75{width:calc(75% - var(--wp--style--block-gap, .5em)*.25)}.wp-block-buttons>.wp-block-button.wp-block-button__width-100{flex-basis:100%;width:100%}.wp-block-buttons.is-vertical>.wp-block-button[class*=wp-block-button__width]{width:calc(var(--wp--block-button--width)*1%)}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{width:25%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{width:50%}.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{width:75%}.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{border-radius:0}.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{border-radius:0!important}:root :where(.wp-block-button .wp-block-button__link.is-style-outline),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link){border:2px solid;padding:.667em 1.333em}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-text-color)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-text-color)){color:currentColor}:root :where(.wp-block-button .wp-block-button__link.is-style-outline:not(.has-background)),:root :where(.wp-block-button.is-style-outline>.wp-block-button__link:not(.has-background)){background-color:transparent;background-image:none} 89/*# sourceURL=https://www.benlcollins.com/wp-includes/blocks/button/style.min.css */ 90</style> 91<style id="global-styles-inline-css"> 92:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--dark-gray: #111;--wp--preset--color--light-gray: #f1f1f1;--wp--preset--color--yellow: #f4ca16;--wp--preset--color--dark-brown: #352712;--wp--preset--color--medium-pink: #e53b51;--wp--preset--color--light-pink: #ffe5d1;--wp--preset--color--dark-purple: #2e2256;--wp--preset--color--purple: #674970;--wp--preset--color--blue-gray: #22313f;--wp--preset--color--bright-blue: #55c3dc;--wp--preset--color--light-blue: #e9f2f9;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,
920) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--gradient--dark-gray-gradient-gradient: linear-gradient(90deg, rgba(17,17,17,1) 0%, rgba(42,42,42,1) 100%);--wp--preset--gradient--light-gray-gradient: linear-gradient(90deg, rgba(241,241,241,1) 0%, rgba(215,215,215,1) 100%);--wp--preset--gradient--white-gradient: linear-gradient(90deg, rgba(255,255,255,1) 0%, rgba(230,230,230,1) 100%);--wp--preset--gradient--yellow-gradient: linear-gradient(90deg, rgba(244,202,22,1) 0%, rgba(205,168,10,1) 100%);--wp--preset--gradient--dark-brown-gradient: linear-gradient(90deg, rgba(53,39,18,1) 0%, rgba(91,67,31,1) 100%);--wp--preset--gradient--medium-pink-gradient: linear-gradient(90deg, rgba(229,59,81,1) 0%, rgba(209,28,51,1) 100%);--wp--preset--gradient--light-pink-gradient: linear-gradient(90deg, rgba(255,229,209,1) 0%, rgba(255,200,158,1) 100%);--wp--preset--gradient--dark-purple-gradient: linear-gradient(90deg, rgba(46,34,86,1) 0%, rgba(66,48,123,1) 100%);--wp--preset--gradient--purple-gradient: linear-gradient(90deg, rgba(103,73,112,1) 0%, rgba(131,93,143,1) 100%);--wp--preset--gradient--blue-gray-gradient: linear-gradient(90deg, rgba(34,49,63,1) 0%, rgba(52,75,96,1) 100%);--wp--preset--gradient--bright-blue-gradient: linear-gradient(90deg, rgba(85,195,220,1) 0%, rgba(43,180,211,1) 100%);--wp--preset--gradient--light-blue-gradient: linear-gradient(90deg, rgba(233,242,249,1) 0%, rgba(193,218,238,1) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-gray-color{color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-color{color: var(--wp--preset--color--light-gray) !important;}.has-yellow-color{color: var(--wp--preset--color--yellow) !important;}.has-dark-brown-color{color: var(--wp--preset--color--dark-brown) !important;}.has-medium-pink-color{color: var(--wp--preset--color--medium-pink) !important;}.has-light-pink-color{color: var(--wp--preset--color--light-pink) !important;}.has-dark-purple-color{color: var(--wp--preset--color--dark-purple) !important;}.has-purple-color{color: var(--wp--preset--color--purple) !important;}.has-blue-gray-color{color: var(--wp--preset--color--blue-gray) !important;}.has-bright-blue-color{color: var(--wp--preset--color--bright-blue) !important;}.has-light-blue-color{color: var(--wp--preset--color--light-blue) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-gray-background-color{background-color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-background-color{background-color: var(--wp--preset--color--light-gray) !important;}.has-yellow-background-color{background-color: var(--wp--preset--color--yellow) !important;}.has-dark-brown-background-color{background-color: var(--wp--preset--color--dark-brown) !important;}.has-medium-pink-background-color{background-color: var(--wp--preset--color--medium-pink) !important;}.has-light-pink-background-color{background-color: var(--wp--preset--color--light-pink) !important;}.has-dark-purple-background-color{background-color: var(--wp--preset--color--dark-purple) !important;}.has-purple-background-color{background-color: var(--wp--preset--color--purple) !important;}.has-blue-gray-background-color{background-color: var(--wp--preset--color--blue-gray) !important;}.has-bright-blue-background-color{background-color: var(--wp--preset--color--bright-blue) !important;}.has-light-blue-background-color{background-color: var(--wp--preset--color--light-blue) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-dark-gray-border-color{border-color: var(--wp--preset--color--dark-gray) !important;}.has-light-gray-border-color{border-color: var(--wp--preset--color--light-gray) !important;}.has-yellow-border-color{border-color: var(--wp--preset--color--yellow) !important;}.has-dark-brown-border-color{border-color: var(--wp--preset--color--dark-brown) !important;}.has-medium-pink-border-color{border-color: var(--wp--preset--color--medium-pink) !important;}.has-light-pink-border-color{border-color: var(--wp--preset--color--light-pink) !important;}.has-dark-purple-border-color{border-color: var(--wp--preset--color--dark-purple) !important;}.has-purple-border-color{border-color: var(--wp--preset--color--purple) !important;}.has-blue-gray-border-color{border-color: var(--wp--preset--color--blue-gray) !important;}.has-bright-blue-border-color{border-color: var(--wp--preset--color--bright-blue) !important;}.has-light-blue-border-color{border-color: var(--wp--preset--color--light-blue) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
92.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-dark-gray-gradient-gradient-gradient-background{background: var(--wp--preset--gradient--dark-gray-gradient-gradient) !important;}.has-light-gray-gradient-gradient-background{background: var(--wp--preset--gradient--light-gray-gradient) !important;}.has-white-gradient-gradient-background{background: var(--wp--preset--gradient--white-gradient) !important;}.has-yellow-gradient-gradient-background{background: var(--wp--preset--gradient--yellow-gradient) !important;}.has-dark-brown-gradient-gradient-background{background: var(--wp--preset--gradient--dark-brown-gradient) !important;}.has-medium-pink-gradient-gradient-background{background: var(--wp--preset--gradient--medium-pink-gradient) !important;}.has-light-pink-gradient-gradient-background{background: var(--wp--preset--gradient--light-pink-gradient) !important;}.has-dark-purple-gradient-gradient-background{background: var(--wp--preset--gradient--dark-purple-gradient) !important;}.has-purple-gradient-gradient-background{background: var(--wp--preset--gradient--purple-gradient) !important;}.has-blue-gray-gradient-gradient-background{background: var(--wp--preset--gradient--blue-gray-gradient) !important;}.has-bright-blue-gradient-gradient-background{background: var(--wp--preset--gradient--bright-blue-gradient) !important;}.has-light-blue-gradient-gradient-background{background: var(--wp--preset--gradient--light-blue-gradient) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 93:where(.wp-block-latest-posts.is-layout-flex){gap: 1.25em;}:where(.wp-block-latest-posts.is-layout-grid){gap: 1.25em;} 94/*# sourceURL=global-styles-inline-css */ 95</style> 96 97<link rel='stylesheet' id='simple-banner-style-css' href='https://www.benlcollins.com/wp-content/plugins/simple-banner/simple-banner.css?ver=3.3.2' media='all' /> 98<link rel='stylesheet' id='twentyfifteen-fonts-css' href='https://www.benlcollins.com/wp-content/themes/twentyfifteen/assets/fonts/noto-sans-plus-noto-serif-plus-inconsolata.css?ver=20230328' media='all' /> 99<link rel='stylesheet' id='genericons-css' href='https://www.benlcollins.com/wp-content/themes/twentyfifteen/genericons/genericons.css?ver=20251101' media='all' /> 100<link rel='stylesheet' id='twentyfifteen-style-css' href='https://www.benlcollins.com/wp-content/themes/twentyfifteen/style.css?ver=20260819' media='all' /> 101<link rel='stylesheet' id='twentyfifteen-block-style-css' href='https://www.benlcollins.com/wp-content/themes/twentyfifteen/css/blocks.css?ver=20240715' media='all' /> 102<link rel='stylesheet' id='convertkit-admin-quicktags-css' href='https://www.benlcollins.com/wp-content/plugins/convertkit/resources/backend/css/quicktags.css?ver=3.4.1' media='all' />
103<script data-wp-strategy="defer" defer id="fathom-snippet-js" src="https://cdn.usefathom.com/script.js" data-site="BMHYBZTT" data-no-minify></script>
vendor: 1 bytes, line 103
103
104<script id="jquery-core-js" src="https://www.benlcollins.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 104
104
105<script id="jquery-migrate-js" src="https://www.benlcollins.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 105
105
106<script id="simple-banner-script-js-before"> 107const simpleBannerScriptParams = {"pro_version_enabled":"","debug_mode":"","id":2905,"version":"3.3.2","banner_params":[{"hide_simple_banner":"yes","simple_banner_prepend_element":"","simple_banner_position":"relative","header_margin":"","header_padding":"","wp_body_open_enabled":"","wp_body_open":true,"simple_banner_z_index":"","disabled_on_current_page":false,"disabled_pages_array":[],"is_current_page_a_post":true,"disabled_on_posts":"","simple_banner_disabled_page_paths":"","simple_banner_font_size":"20px","simple_banner_color":"BLACK","simple_banner_text_color":"WHITE","simple_banner_link_color":"#ffffff","simple_banner_close_color":"WHITE","simple_banner_text":"<a href=\"https:\/\/geminimastery.benlcollins.com\/\">Stop feeling behind with AI. Start leading. 28 Days to Gemini Mastery \u2192<\/a>","simple_banner_custom_css":"","simple_banner_scrolling_custom_css":"","simple_banner_text_custom_css":"","simple_banner_button_css":"","site_custom_css":"","keep_site_custom_css":"","site_custom_js":"","keep_site_custom_js":"","close_button_enabled":"on","close_button_expiration":"","close_button_cookie_set":false,"current_date":{"date":"2026-10-01 10:31:52.384812","timezone_type":3,"timezone":"UTC"},"start_date":{"date":"2026-10-01 10:31:52.384822","timezone_type":3,"timezone":"UTC"},"end_date":{"date":"2026-10-01 10:31:52.384829","timezone_type":3,"timezone":"UTC"},"simple_banner_start_after_date":"","simple_banner_remove_after_date":"","simple_banner_insert_inside_element":""}]} 108//# sourceURL=simple-banner-script-js-before 109</script>
vendor: 1 bytes, line 109
109
110<script id="simple-banner-script-js" src="https://www.benlcollins.com/wp-content/plugins/simple-banner/simple-banner.js?ver=3.3.2"></script>
vendor: 1 bytes, line 110
110
111<script id="twentyfifteen-script-js-extra"> 112var screenReaderText = {"expand":"\u003Cspan class=\"screen-reader-text\"\u003Eexpand child menu\u003C/span\u003E","collapse":"\u003Cspan class=\"screen-reader-text\"\u003Ecollapse child menu\u003C/span\u003E"}; 113//# sourceURL=twentyfifteen-script-js-extra 114</script>
vendor: 1 bytes, line 114
114
115<script data-wp-strategy="defer" defer id="twentyfifteen-script-js" src="https://www.benlcollins.com/wp-content/themes/twentyfifteen/js/functions.js?ver=20250729"></script>
115 116<link rel="https://api.w.org/" href="https://www.benlcollins.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.benlcollins.com/wp-json/wp/v2/posts/2905" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.benlcollins.com/xmlrpc.php?rsd" /> 117<link rel='shortlink' href='https://www.benlcollins.com/?p=2905' />
118<script async src="https://js.sparkloop.app/team_f28d45a262.js" data-sparkloop></script>
118 119<!-- Black Friday Top Banner --><!--<br>
120<script src="https://static.elfsight.com/platform/platform.js" data-use-service-core defer></script>
120 121<div class="elfsight-app-bc12d32e-94fd-4088-9e5e-f4b10e441404" data-elfsight-app-lazy></div>--> 122 123<!-- Google Workspace Affiliate Scripts
124<script type="text/javascript" language="javascript" src="https://www.kqzyfj.com/placeholder-53801197?target=_top&mouseover=N"></script>
124--><style id="simple-banner-hide" type="text/css">.simple-banner{display:none;}</style><style id="simple-banner-position" type="text/css">.simple-banner{position:relative;}</style><style id="simple-banner-font-size" type="text/css">.simple-banner .simple-banner-text{font-size:20px;}</style><style id="simple-banner-background-color" type="text/css">.simple-banner{background:BLACK;}</style><style id="simple-banner-text-color" type="text/css">.simple-banner .simple-banner-text{color:WHITE;}</style><style id="simple-banner-link-color" type="text/css">.simple-banner .simple-banner-text a{color:#ffffff;}</style><style id="simple-banner-z-index" type="text/css">.simple-banner{z-index: 99999;}</style><style id="simple-banner-close-color" type="text/css">.simple-banner .simple-banner-button{color:WHITE;}</style><style id="simple-banner-site-custom-css-dummy" type="text/css"></style>
124<script id="simple-banner-site-custom-js-dummy" type="text/javascript"></script>
124<!-- Stream WordPress user activity plugin v4.4.0 --> 125<style id="custom-background-css"> 126body.custom-background { background-color: #ffffff; } 127</style>
128<script async src="https://js.sparkloop.app/team_f28d45a262.js" data-sparkloop></script>
128<link rel="icon" href="https://www.benlcollins.com/wp-content/uploads/2020/06/cropped-BC-Icon-Color-512-32x32.png" sizes="32x32" /> 129<link rel="icon" href="https://www.benlcollins.com/wp-content/uploads/2020/06/cropped-BC-Icon-Color-512-192x192.png" sizes="192x192" /> 130<link rel="apple-touch-icon" href="https://www.benlcollins.com/wp-content/uploads/2020/06/cropped-BC-Icon-Color-512-180x180.png" /> 131<meta name="msapplication-TileImage" content="https://www.benlcollins.com/wp-content/uploads/2020/06/cropped-BC-Icon-Color-512-270x270.png" /> 132<style id="wp-custom-css"> 133/* 134Welcome to Custom CSS! 135 136CSS (Cascading Style Sheets) is a kind of code that tells the browser how 137to render a web page. You may delete these comments and get started with 138your customizations. 139 140By default, your stylesheet will be loaded after the theme stylesheets, 141which means that your rules can take precedence and override the theme CSS 142rules. Just write here what you want to change, you don't need to copy all 143your theme's stylesheet content. 144*/ 145/* 146a { 147 color: #0F9e59; 148} 149*/ 150.promotionBox { 151 width: 100%; 152 height: 360px; 153 background: #fff; 154 border:5px solid #0F9D58; 155 border-radius: 25px; 156 padding: 20px; 157} 158 159.codewrapper3 { 160 background: #f5f5f5; 161 margin: 0 0 30px 5px; 162 padding: 10px 15px 10px 15px; 163 border: 2px solid #dcdcdc; 164 font-size: 24px; 165 word-wrap: break-word; 166} 167 168.codewrapper4 { 169 background: #f5f5f5; 170 margin: 0 0 30px 5px; 171 padding: 10px 15px 10px 15px; 172 border: 2px solid #dcdcdc; 173 font-size: 18px; 174 word-wrap: break-word; 175} 176 177.container { 178 margin-right: 40px; 179 margin-bottom: 40px; 180 float: left; 181} 182 183.logo_grid { 184 clear: both; 185} 186 187 188/* styles for flash notice at top of posts */ 189.notice { 190 font: 14px/18px; 191 letter-spacing: .1em; 192 width: 100%; 193 margin: 20px auto; 194 text-align: center; 195 padding: 10px; 196 color: white; 197 text-decoration: none !important; 198 border-radius: .5rem; 199 background-color: #49bb5b; 200 border: 1px solid #2B823A; 201} 202 203.notice a:hover { 204 color: white; 205 text-decoration: underline; 206} 207 208.noticeYellow { 209 font: 20px/32px; 210 letter-spacing: .05em; 211 width: 100%; 212 margin: 20px auto; 213 text-align: center; 214 padding: 10px; 215 text-decoration: none !important; 216 border-radius: .25rem; 217 background-color: #FEE2B7; 218 border: 2px solid #cbb492; 219} 220 221.noticeYellow a:hover { 222 text-decoration: underline; 223} 224 225.noticeYellowLeft { 226 font: 20px/32px; 227 letter-spacing: .05em; 228 width: 100%; 229 margin: 20px auto; 230 text-align: left; 231 padding: 10px 10px 10px 10px; 232 text-decoration: none !important; 233 background-color: #FEE2B7; 234 border: 2px solid #cbb492; 235} 236 237.noticeYellowLeft a:hover { 238 text-decoration: underline; 239} 240 241.noticeYellowCenter { 242 font: 20px/24px; 243 letter-spacing: .05em; 244 width: 100%; 245 margin: 10px; 246 text-align: center; 247 padding: 20px; 248 text-decoration: none !important; 249 border-radius: 2.5rem; 250 background-color: #FEE2B7; 251 border: 2px solid #cbb492; 252} 253 254.noticeYellowCenter a:hover { 255 text-decoration: underline; 256} 257 258table#table_books { 259 width: 100%; 260} 261 262table#table_books, td, tr { 263 border: none; 264} 265 266table#table_data { 267 width: 100%; 268} 269 270table#table_data, td, tr { 271 border: 1px solid #d3d3d3; 272} 273 274#table_data td, tr { 275 padding: 8px; 276} 277 278.text-red { 279 color: #F15854; 280} 281 282.note-link { 283 font-size: 18px; 284 line-height: 24px; 285 position: relative; 286 padding: 14px 20px 24px 20px; 287 margin: 32px 0; 288 background-color: rgba(255,202,0,0.05); 289 border: solid 2px #ffca00; 290 border-radius: 12px; 291 clear: both; 292} 293 294.note-link-title { 295 font-size: 18px; 296 line-height: 24px; 297 color: #868F93; 298 padding-bottom: 8px; 299} 300 301.note-link-a { 302 display: block; 303 margin-top: 10px; 304 font-weight: 500; 305 font-size: 16px; 306 color: #000; 307} 308 309 310body {font-family: sans-serif} 311 312.related-articles { 313 display: block; 314 clear:both; 315 object-fit: contain; 316} 317 318.codeLinePadding { 319 line-height: 2em !important; 320 background-color: #e0e0e0 !important; 321 padding: 10px; 322} 323 324/* custom styles for the custom number format post */ 325#customNumberFormat { 326 border-collapse: collapse; 327 width: 100%; 328} 329 330#customNumberFormat td, #customNumberFormat th { 331 border: 1px solid #ddd; 332 padding: 8px; 333 text-align: center; 334} 335 336#customNumberFormat tr:nth-child(even){background-color: #f2f2f2;} 337 338#customNumberFormat tr:hover {background-color: #ddd;} 339 340#customNumberFormat th { 341 padding-top: 12px; 342 padding-bottom: 12px; 343 background-color: #0F9E59; 344 color: white; 345} 346 347pre{ 348 background:#f5f5f5; 349 border:1px #eee solid; 350 border-left:6px #eee solid; 351 font-size:0.9em; 352 white-space:pre; 353 overflow-x:auto; 354} 355 356.exerciseHighlight { 357 padding: 5px 5px 5px 10px; 358 margin-bottom: 1em; 359 background-color: #1A72E8; 360 font-weight: bold; 361 color: white; 362 text-align: left; 363 border-left: 15px #0d3974 solid; 364} 365 366.exerciseBox { 367 border: 2px #0d3974 dashed; 368 padding: 15px 10px 5px 10px; 369 margin: 35px 0px 30px 0px; 370} 371 372.exerciseHighlightSheets { 373 padding: 5px 5px 5px 10px; 374 margin-bottom: 1em; 375 background-color: #54a06b; 376 font-weight: bold; 377 color: white; 378 text-align: left; 379 border-left: 15px #2A8947 solid; 380} 381 382.exerciseBoxSheets { 383 border: 2px #2A8947 dashed; 384 padding: 15px 10px 5px 10px; 385 margin: 35px 0px 30px 0px; 386} 387 388.courseMenu ul { 389 list-style: none; 390 width:100%; 391 margin-left:0px; 392 padding-left:0px; 393} 394 395.courseMenu li { 396 padding: 15px 0px 10px 0px; 397 border-bottom: 1px solid #e8e8e8; 398} 399 400.courseMenu a { 401 text-decoration: none; 402 border-bottom-style: none; 403} 404 405.textWrapLeft { 406 float: left; 407 margin: 5px 10px 10px 0px; 408} 409 410.textWrapRight { 411 float: right; 412 margin: 5px 0px 10px 10px; 413} 414 415.button { 416 background-color: #4CAF50; /* Green */ 417 border: 2px solid #4CAF50 !important; 418 color: white; 419 padding: 16px 32px; 420 text-align: center; 421 text-decoration: none !important; 422 display: inline-block; 423 font-size: 20px; 424 font-weight: bold; 425 margin: 0px 2px 4px 2px; 426 transition-duration: 0.4s; 427 cursor: pointer; 428} 429 430.button1 { 431 background-color: white; 432 color: black; 433 border: 2px solid #4CAF50; 434} 435 436.button1:hover { 437 background-color: #4CAF50; 438 color: white; 439} 440 441#superscripts { 442 border-collapse: collapse; 443 width: 400px; 444} 445 446#superscripts td, #superscripts th { 447 border: 1px solid #ddd; 448 padding: 5px 5px 5px 8px; 449 text-align: center; 450} 451 452#superscripts tr:nth-child(even){background-color: #f2f2f2;} 453 454#superscripts tr:hover {background-color: #ddd;} 455 456#superscripts th { 457 padding-top: 12px; 458 padding-bottom: 12px; 459 text-align: left; 460 background-color: #0F9E59; 461 color: white; 462 text-align: center; 463} 464 465.threeColContents { 466 border:none; 467 padding:10px; 468} 469.threeColContents th { 470 border:none; 471 padding:10px; 472} 473.threeColContents td { 474 border:none; 475 padding:10px; 476 477 font-size: 10px; 478} 479 480.videoWrapper iframe { 481 display:block; 482 margin:auto; 483} 484 485/* custom styles generated for table in every function project posts */ 486.tg {border-collapse:collapse;border-spacing:0;} 487.tg td{border-color:black;border-style:solid;border-width:1px;font-size:14px; 488 overflow:hidden;padding:10px 16px;word-break:normal;} 489.tg th{border-color:black;border-style:solid;border-width:1px;font-size:14px; 490 font-weight:normal;overflow:hidden;padding:10px 16px;word-break:normal;color:white;} 491.tg .tg-yrf6{background-color:#ffffff;border-color:#c0c0c0;font-size:18px;text-align:center;vertical-align:bottom} 492.tg .tg-h4pz{background-color:#0F9E59;border-color:#c0c0c0; 493 font-size:18px;font-weight:bold; 494 text-align:center;vertical-align:bottom} 495.tg .tg-aowf{background-color:#efefef;border-color:#c0c0c0;font-size:18px;text-align:center;vertical-align:bottom} 496.tg .tg-4c6z{background-color:#0F9E59;border-color:#c0c0c0;font-size:18px;font-weight:bold;text-align:center;vertical-align:bottom} 497.tg .tg-4sho{background-color:#ffffff;border-color:#c0c0c0;font-size:18px;text-align:left;vertical-align:bottom} 498.tg .tg-xdbz{background-color:#efefef;border-color:#c0c0c0;font-size:18px;text-align:left;vertical-align:bottom} 499
500/* Affiliate Banner Ad Code - For Google Workspace */ 501.note-link-blue { 502 font-size: 18px; 503 line-height: 24px; 504 position: relative; 505 padding: 14px 20px 24px 20px; 506 margin: 32px 0; 507 background-color: #e9f1fe; 508 border: solid 2px #4285F4; 509 border-radius: 12px; 510 clear: both; 511 min-height: 250px; 512} 513 514.note-link-blue-title { 515 font-size: 18px; 516 line-height: 32px; 517 color: #4285F4; 518} 519 520.note-link-blue-p { 521 display: block; 522 margin-top: 10px; 523 font-weight: 500; 524 font-size: 16px; 525 color: #000; 526} 527 528.note-link-blue-a { 529 text-align: center; 530} 531 532.si_button { 533 padding-bottom: 30px; 534} 535 536</style> 537<style id="rocket-lazyrender-inline-css">[data-wpr-lazyrender] {content-visibility: auto;}</style><meta name="generator" content="WP Rocket 3.23.3.3" data-wpr-features="wpr_preconnect_external_domains wpr_automatic_lazy_rendering wpr_oci wpr_image_dimensions wpr_cdn wpr_preload_links wpr_desktop" /></head> 538 539<body class="wp-singular post-template-default single single-post postid-2905 single-format-standard custom-background wp-custom-logo wp-embed-responsive wp-theme-twentyfifteen"> 540<div id="page" class="hfeed site"> 541 <a class="skip-link screen-reader-text" href="#content"> 542 Skip to content </a> 543 544 <div id="sidebar" class="sidebar"> 545 <header id="masthead" class="site-header"> 546 <div class="site-branding"> 547 <a href="https://www.benlcollins.com/" class="custom-logo-link" rel="home"><img width="248" height="34" src="https://www.benlcollins.com/wp-content/uploads/2020/06/cropped-BC-Horizontal-Color-1.png" class="custom-logo" alt="Ben Collins logo" decoding="async" /></a> <p class="site-description">Educator and Google Developer Expert. Helping you navigate the world of spreadsheets & AI.</p> 548 549 <button class="secondary-toggle">Menu and widgets</button> 550 </div><!-- .site-branding --> 551 </header><!-- .site-header --> 552 553 <div id="secondary" class="secondary"> 554 555 <nav id="site-navigation" class="main-navigation"> 556 <div class="menu-main-menu-container"><ul id="menu-main-menu" class="nav-menu"><li id="menu-item-21380" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-home menu-item-21380"><a href="https://www.benlcollins.com/">Home</a></li> 557<li id="menu-item-21639" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21639"><a href="https://geminimastery.benlcollins.com/"><strong style=" background: linear-gradient(90deg, #FA47D3 0%, #9552E3 40%, #1861F8 70%, #0AAEC5 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; ">28 Days to Gemini Mastery</strong></a></li> 558<li id="menu-item-10164" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-10164"><a target="_blank" href="https://courses.benlcollins.com/">Courses</a> 559<ul class="sub-menu"> 560 <li id="menu-item-21644" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21644"><a href="https://geminimastery.benlcollins.com/">28 Days to Gemini Mastery</a></li> 561 <li id="menu-item-21645" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21645"><a href="https://moderngooglesheets.benlcollins.com/">Modern Google Sheets</a></li> 562 <li id="menu-item-21131" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-21131"><a target="_blank" href="https://courses.benlcollins.com/">Other Courses</a></li> 563 <li id="menu-item-11224" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-11224"><a target="_blank" href="https://sso.teachable.com/secure/69396/users/sign_in">Student Login</a></li> 564</ul> 565</li> 566<li id="menu-item-21825" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-21825"><a href="https://www.benlcollins.com/future-proof-newsletter/">Newsletter</a></li> 567<li id="menu-item-1439" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1439"><a href="https://www.benlcollins.com/about/">About</a></li> 568<li id="menu-item-453" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-453"><a href="https://www.benlcollins.com/contact/">Contact</a></li> 569</ul></div> </nav><!-- .main-navigation --> 570 571 572 <div id="widget-area" class="widget-area" role="complementary"> 573 <aside id="search-2" class="widget widget_search"><h2 class="widget-title">Search</h2><form role="search" method="get" class="search-form" action="https://www.benlcollins.com/"> 574 <label> 575 <span class="screen-reader-text">Search for:</span> 576 <input type="search" class="search-field" placeholder="Search …" value="" name="s" /> 577 </label> 578 <input type="submit" class="search-submit screen-reader-text" value="Search" /> 579 </form></aside><aside id="block-3" class="widget widget_block"> 580<h2 class="wp-block-heading">LATEST</h2> 581</aside><aside id="block-2" class="widget widget_block widget_recent_entries"><ul class="wp-block-latest-posts__list wp-block-latest-posts is-layout-flow wp-block-latest-posts-is-layout-flow"><li><a class="wp-block-latest-posts__post-title" href="https://www.benlcollins.com/spreadsheets/400-google-sheets-tips-whats-next/">The end of an era: issue #400 was the last Google Sheets Tips newsletter and what’s coming next</a></li> 582<li><a class="wp-block-latest-posts__post-title" href="https://www.benlcollins.com/spreadsheets/datatype-font/">Explorations with the Datatype Font in Google Sheets</a></li> 583<li><a class="wp-block-latest-posts__post-title" href="https://www.benlcollins.com/spreadsheets/sheets-canvas/">Build Dashboards and Kanban Boards with the Google Sheets Canvas Tool</a></li> 584<li><a class="wp-block-latest-posts__post-title" href="https://www.benlcollins.com/spreadsheets/google-next-2026/">Google Sheets and Workspace Updates from Google Next 2026</a></li> 585<li><a class="wp-block-latest-posts__post-title" href="https://www.benlcollins.com/ai/formulas-2026/">Is Formula Writing Dead? (And why we shouldn’t mourn it)</a></li> 586</ul></aside> </div><!-- .widget-area --> 587 588 </div><!-- .secondary --> 589 590 </div><!-- .sidebar --> 591
592 <div id="content" class="site-content"> 593 594 <div id="primary" class="content-area"> 595 <main id="main" class="site-main"> 596 597 598<article id="post-2905" class="post-2905 post type-post status-publish format-standard hentry category-apps-script tag-apps-script tag-dashboard tag-google-sheets"> 599 600 <header class="entry-header"> 601 <h1 class="entry-title">Google Apps Script: A Beginner’s Guide</h1> </header><!-- .entry-header --> 602 603 <div class="entry-content"> 604 <style> 605.gmp-wrap td, .gmp-wrap tr, .gmp-wrap table { border: none !important; border-top: none !important; border-right: none !important; border-bottom: none !important; border-left: none !important; border-width: 0 !important; border-style: none !important; border-color: transparent !important; } 606</style> 607<div class="gmp-wrap" style="font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;border-radius:10px;overflow:hidden;border:3px solid #C9950A;margin:1.5rem 0;background:#FFFBEB;"> 608<table cellpadding="0" cellspacing="0" border="0" style="width:100%;border:none;border-collapse:collapse;margin:0;padding:0;background:transparent;"> 609<tr> 610<td valign="middle" style="width:165px;padding:1.1rem 0 1.1rem 1.1rem;vertical-align:middle;background:transparent;"> 611 <a href="https://geminimastery.benlcollins.com" style="display:block;width:150px;border-radius:6px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,0.12);line-height:0;margin:0;padding:0;text-decoration:none;"><br /> 612 <img fetchpriority="high" width="2726" height="1533" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2026/03/courseIcon3.jpg" alt="28 Days to Gemini Mastery" style="width:150px;height:auto;display:block;margin:0;padding:0;border:0;box-shadow:none;float:none;" /><br /> 613 </a> 614 </td> 615<td valign="middle" style="padding:1.1rem 1.1rem 1.1rem 1.2rem;vertical-align:middle;background:transparent;"> 616<p style="font-size:11px;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:#92700A;margin:0 0 4px 0;padding:0;line-height:1.2;">New course</p> 617<p style="font-size:15px;font-weight:700;color:#111;margin:0 0 10px 0;padding:0;line-height:1.25;">Stop dabbling with Gemini. Start building AI systems.</p> 618<table cellpadding="0" cellspacing="0" border="0" style="width:100%;border:none;border-collapse:collapse;margin:0 0 10px 0;padding:0;"> 619<tr> 620<td valign="top" style="width:50%;padding:3px 12px 3px 0;vertical-align:top;background:transparent;"> 621 <span style="display:flex;align-items:flex-start;gap:7px;font-size:13px;color:#444;line-height:1.4;"><span style="display:inline-block;min-width:6px;width:6px;height:6px;border-radius:50%;background:#C9950A;margin-top:4px;flex-shrink:0;"></span>One-off prompts â repeatable workflows</span> 622 </td> 623<td valign="top" style="width:50%;padding:3px 0;vertical-align:top;background:transparent;"> 624 <span style="display:flex;align-items:flex-start;gap:7px;font-size:13px;color:#444;line-height:1.4;"><span style="display:inline-block;min-width:6px;width:6px;height:6px;border-radius:50%;background:#C9950A;margin-top:4px;flex-shrink:0;"></span>Gemini across all your Workspace tools</span> 625 </td> 626</tr> 627<tr> 628<td valign="top" style="width:50%;padding:3px 12px 3px 0;vertical-align:top;background:transparent;"> 629 <span style="display:flex;align-items:flex-start;gap:7px;font-size:13px;color:#444;line-height:1.4;"><span style="display:inline-block;min-width:6px;width:6px;height:6px;border-radius:50%;background:#C9950A;margin-top:4px;flex-shrink:0;"></span>Automations and agents that save hours</span> 630 </td> 631<td valign="top" style="width:50%;padding:3px 0;vertical-align:top;background:transparent;"> 632 <span style="display:flex;align-items:flex-start;gap:7px;font-size:13px;color:#444;line-height:1.4;"><span style="display:inline-block;min-width:6px;width:6px;height:6px;border-radius:50%;background:#C9950A;margin-top:4px;flex-shrink:0;"></span>NotebookLM, vibe coding, Gemini Gems</span> 633 </td> 634</tr> 635</table> 636<div style="display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin:0;padding:0;">
637 <span style="font-size:20px;font-weight:700;color:#111;">$149</span><br /> 638 <a href="https://geminimastery.benlcollins.com" style="display:inline-block;font-size:13.5px;font-weight:700;padding:8px 16px;border-radius:6px;text-decoration:none;color:#fff;background:#C0392B;white-space:nowrap;margin:0;">Get instant access â</a> 639 </div> 640</td> 641</tr> 642</table> 643</div> 644<h2>What is Google Apps Script?</h2> 645<p>Google Apps Script is a cloud-based scripting language for extending the functionality of Google Apps and building lightweight cloud-based applications.</p> 646<p>It means you write small programs with Apps Script to extend the standard features of Google Workspace Apps. It’s great for filling in the gaps in your workflows.</p> 647<p>With Apps Script, you can do cool stuff like <a href="https://www.benlcollins.com/apps-script/repeatable-task/" rel="noopener" target="_blank">automating repeatable tasks</a>, creating documents, emailing people automatically and connecting your Google Sheets to other services you use.</p> 648<h2>Writing your first Google Script</h2> 649<p>In this Google Sheets script tutorial, we’re going to write a script that is bound to our Google Sheet. This is called a <strong>container-bound</strong> script.</p> 650<p>(If you’re looking for more advanced examples and tutorials, check out the full list of Apps Script articles on my <a href="https://www.benlcollins.com/#AppsScript" rel="noopener noreferrer" target="_blank">homepage</a>.)</p> 651<h3>Hello World in Google Apps Script</h3> 652<p>Let’s write our first, extremely basic program, the classic “Hello world” program beloved of computer teaching departments the world over.</p> 653<p>Begin by creating a new Google Sheet. </p> 654<p>Then click the menu: <em>Extensions > Apps Script</em></p> 655<p>This will open a new tab in your browser, which is the Google Apps Script editor window:</p> 656<p><img fetchpriority="high" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptIDE.jpg" alt="Google Apps Script Editor" width="800" height="371" class="aligncenter size-full wp-image-14937" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptIDE.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptIDE-300x139.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptIDE-768x356.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /></p> 657<p>By default, it’ll open with a single Google Script file (<code>code.gs</code>) and a default code block, <code>myFunction()</code>:</p> 658<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 659function myFunction() { 660 661} 662</pre> 663<p>In the code window, between the curly braces after the <code>function myFunction()</code> syntax, write the following line of code so you have this in your code window:</p> 664<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 665function myFunction() { 666 Browser.msgBox("Hello World!"); 667} 668</pre> 669<p>Your code window should now look like this:</p> 670<p><img decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/helloWorld.jpg" alt="Hello World Apps Script" width="800" height="307" class="aligncenter size-full wp-image-14940" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/helloWorld.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/helloWorld-300x115.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/helloWorld-768x295.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><a id="permissions"></a></p> 671<h3>Google Apps Script Authorization</h3> 672<p>Google Scripts have robust security protections to reduce risk from unverified apps, so we go through the authorization workflow when we first authorize our own apps.</p> 673<p>When you hit the run button for the first time, you will be prompted to authorize the app to run:</p> 674<p><img decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAuthorization.jpg" alt="Google Apps Script Authorization" width="800" height="535" class="aligncenter size-full wp-image-14935" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAuthorization.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAuthorization-300x201.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAuthorization-768x514.jpg 768w" sizes="(max-width: 800px) 100v
674w, 800px" /></p> 675<p>Clicking <strong>Review Permissions</strong> pops up another window in turn, showing what permissions your app needs to run. In this instance the app wants to view and manage your spreadsheets in Google Drive, so click Allow (otherwise your script won’t be able to interact with your spreadsheet or do anything):</p> 676<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAccess.jpg" alt="Google Apps Script Access" width="800" height="950" class="aligncenter size-full wp-image-14934" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAccess.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAccess-253x300.jpg 253w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptAccess-768x912.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p> 677<blockquote><p>âï¸When your first run your apps script, you may see the “app isn’t verified” screen and warnings about whether you want to continue.</p></blockquote> 678<p>In our case, since we are the creator of the app, we know it’s safe so we do want to continue. Furthermore, the apps script projects in this post are not intended to be published publicly for other users, so we don’t need to submit it to Google for review (although if you want to do that, <a href="https://developers.google.com/apps-script/guides/client-verification" rel="noopener noreferrer" target="_blank">here’s more information</a>).</p> 679<p>Click the “Advanced” button in the bottom left of the review permissions pop-up, and then click the “Go to Starter Script Code (unsafe)” at the bottom of the next screen to continue. Then type in the words “Continue” on the next screen, click Next, and finally review the permissions and click “ALLOW”, as shown in this image (showing a different script in the old editor):</p> 680<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/permissionsUpdate.gif" alt="" width="1386" height="744" class="aligncenter size-full wp-image-7335" /></p> 681<p><em>More information can be found in this <a href="https://mashe.hawksey.info/2017/08/my-google-apps-script-app-isnt-verified-understanding-why-and-how-to-fix/" rel="noopener noreferrer" target="_blank">detailed blog post from Google Developer Expert Martin Hawksey</a>.</em></p> 682<h3>Running a function in Apps Script</h3> 683<p>Once you’ve authorized the Google App script, the function will run (or execute). </p> 684<p>If anything goes wrong with your code, this is the stage when you’d see a warning message (instead of the yellow message, you’ll get a red box with an error message in it).</p> 685<p>Return to your Google Sheet and you should see the output of your program, a message box popup with the classic “Hello world!” message:</p> 686<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/MessageBoxGoogleSheets.jpg" alt="Message Box Google Sheets" width="800" height="636" class="aligncenter size-full wp-image-14941" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/MessageBoxGoogleSheets.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/MessageBoxGoogleSheets-300x239.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/MessageBoxGoogleSheets-768x611.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p> 687<p>Click on <strong>Ok</strong> to dismiss.</p> 688<p>Great job! You’ve now written your first apps script program.</p> 689<h3>Rename functions in Google Apps Script</h3> 690<p>We should rename our function to something more meaningful. </p> 691<p>At present, it’s called myFunction which is the default, generic name generated by Google. Every time I want to call this function (i.e. <em>run it to do something</em>) I would write <code>myFunction()</code>. This isn’t very descriptive, so let’s rename it to <code>helloWorld()</code>, which gives us some context.</p> 692<p>
692So change your code in line 1 from this:</p> 693<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 694function myFunction() { 695 Browser.msgBox("Hello World!"); 696} 697</pre> 698<p>to this:</p> 699<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 700function helloWorld() { 701 Browser.msgBox("Hello World!"); 702} 703</pre> 704<p><a id="menu"></a>Note, it’s convention in Apps Script to use the <a href="https://en.wikipedia.org/wiki/CamelCase" target="_blank" rel="noopener noreferrer">CamelCase naming convention</a>, starting with a lowercase letter. Hence, we name our function <code>helloWorld</code>, with a lowercase <em>h</em> at the start of <em>hello</em> and an uppercase <em>W</em> at the start of <em>World</em>.</p> 705<h3>Adding a custom menu in Google Apps Script</h3> 706<p>In its current form, our program is pretty useless for many reasons, not least because we can only run it from the script editor window and not from our spreadsheet. </p> 707<p>Let’s fix that by adding a custom menu to the menu bar <em>of our spreadsheet</em> so a user can run the script within the spreadsheet without needing to open up the editor window.</p> 708<p>This is actually surprisingly easy to do, requiring only a few lines of code. Add the following 6 lines of code into the editor window, above the <code>helloWorld()</code> function we created above, as shown here:</p> 709<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 710function onOpen() { 711 const ui = SpreadsheetApp.getUi(); 712 ui.createMenu('My Custom Menu') 713 .addItem('Say Hello', 'helloWorld') 714 .addToUi(); 715} 716 717function helloWorld() { 718 Browser.msgBox("Hello World!"); 719} 720</pre> 721<p>If you look back at your spreadsheet tab in the browser now, nothing will have changed. You won’t have the custom menu there yet. We need to re-open our spreadsheet (refresh it) or run our <code>onOpen()</code> script first, for the menu to show up.</p> 722<p>To run <code>onOpen()</code> from the editor window, first select then run the onOpen function as shown in this image:</p> 723<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptMenu.jpg" alt="Google Apps Script Function Menu" width="800" height="446" class="aligncenter size-full wp-image-14939" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptMenu.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptMenu-300x167.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptMenu-768x428.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p> 724<p>Now, when you return to your spreadsheet you’ll see a new menu on the right side of the <strong>Help</strong> option, called <strong>My Custom Menu</strong>. Click on it and it’ll open up to show a choice to run your Hello World program:</p> 725<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/add_menu3-660_mini.jpg" alt="Custom menu" width="660" height="306" class="aligncenter size-full wp-image-7994" srcset="https://www.benlcollins.com/wp-content/uploads/2016/04/add_menu3-660_mini.jpg 660w, https://www.benlcollins.com/wp-content/uploads/2016/04/add_menu3-660_mini-300x139.jpg 300w" sizes="auto, (max-width: 660px) 100vw, 660px" /></p> 726<h3>Run functions from buttons in Google Sheets</h3> 727<p>An alternative way to run Google Scripts from your Sheets is to bind the function to a button in your Sheet.</p> 728<p>For example, here’s an invoice template Sheet with a RESET button to clear out the contents:</p> 729<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/button.gif" alt="Button with apps script in google sheets" width="1505" height="671" class="alignnone size-full wp-image-11046" /></p> 730<p>For more information on how to do this, have a look at this post: <a href="https://www.benlcollins.com/apps-script/google-sheets-button/" rel="noopener noreferrer" target="_blank">Add A Google Sheets Button To Run Scripts</a></p> 731<p><a id="customFunction"></a></p> 732<h2>Google Apps Script Examples</h2> 733<h3>Macros in Google Sheets</h3> 734<p>Another great way to get started with Google Scripts is by using Macros. Macros are small programs in your Google Sheets that you record so that you can re-use them (for example applying standard formatting to a table). They use Ap
734ps Script under the hood so it’s a great way to get started.</p> 735<p>Read more: <a href="https://www.benlcollins.com/spreadsheets/google-sheets-macros/" rel="noopener noreferrer" target="_blank">The Complete Guide to Simple Automation using Google Sheets Macros</a></p> 736<h3>Custom function using Google Apps Script</h3> 737<p>Let’s create a custom function with Apps Script, and also demonstrate the use of the <a href="https://developers.google.com/apps-script/reference/maps/" target="_blank" rel="noopener noreferrer">Maps Service</a>. We’ll be creating a small custom function that calculates the driving distance between two points, based on Google Maps Service driving estimates.</p> 738<p>The goal is to be able to have two place-names in our spreadsheet, and type the new function in a new cell to get the distance, as follows:</p> 739<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/map1-660.jpg" alt="GAS custom function for maps" width="660" height="235" class="aligncenter size-full wp-image-7996" srcset="https://www.benlcollins.com/wp-content/uploads/2016/04/map1-660.jpg 660w, https://www.benlcollins.com/wp-content/uploads/2016/04/map1-660-300x107.jpg 300w" sizes="auto, (max-width: 660px) 100vw, 660px" /></p> 740<p>The solution should be:</p> 741<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/map2-660_mini.jpg" alt="GAS custom map function output" width="660" height="314" class="aligncenter size-full wp-image-7998" srcset="https://www.benlcollins.com/wp-content/uploads/2016/04/map2-660_mini.jpg 660w, https://www.benlcollins.com/wp-content/uploads/2016/04/map2-660_mini-300x143.jpg 300w" sizes="auto, (max-width: 660px) 100vw, 660px" /></p> 742<p>Copy the following code into the Apps Script editor window and save. First time, you’ll need to run the script once from the editor window and click “Allow” to ensure the script can interact with your spreadsheet.</p> 743<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 744function distanceBetweenPoints(start_point, end_point) { 745 // get the directions 746 const directions = Maps.newDirectionFinder() 747 .setOrigin(start_point) 748 .setDestination(end_point) 749 .setMode(Maps.DirectionFinder.Mode.DRIVING) 750 .getDirections(); 751 752 // get the first route and return the distance 753 const route = directions.routes[0]; 754 const distance = route.legs[0].distance.text; 755 return distance; 756} 757</pre> 758<h3>Saving data with Google Apps Script</h3> 759<p>Let’s take a look at another simple use case for this Google Sheets Apps Script tutorial.</p> 760<p>Suppose I want to save copy of some data at periodic intervals, like so:</p> 761<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/save-data.gif" alt="save data in google sheet" width="660" height="411" class="aligncenter size-full wp-image-8004" /></p> 762<p>In this script, I’ve created a custom menu to run my main function. The main function, <code>saveData()</code>, copies the top row of my spreadsheet (the live data) and pastes it to the next blank line below my current data range with the new timestamp, thereby “saving” a snapshot in time.</p> 763<p>The code for this example is:</p> 764<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 765// custom menu function 766function onOpen() { 767 const ui = SpreadsheetApp.getUi(); 768 ui.createMenu('Custom Menu') 769 .addItem('Save Data','saveData') 770 .addToUi(); 771} 772 773// function to save data 774function saveData() { 775 const ss = SpreadsheetApp.getActiveSpreadsheet(); 776 const sheet = ss.getSheets()[0]; 777 const url = sheet.getRange('Sheet1!A1').getValue(); 778 const follower_count = sheet.getRange('Sheet1!B1').getValue(); 779 const date = sheet.getRange('Sheet1!C1').getValue(); 780 sheet.appendRow([url,follower_count,date]); 781} 782</pre> 783<p>See this post: <a href="https://www.benlcollins.com/spreadsheets/saving-data-in-google-sheets/" target="_blank" rel="noopener noreferrer">How To Save Data In Google Sheets With Timestamps Using Apps Script</a>, for a step-by-step guide to create and run this script.</p> 784<h3>Google Apps Script example in Google Docs</h3> 785<p>Google Apps Script is by no means confined to Sheets only and can be accessed from other Google Worksp
785ace tools. </p> 786<p>Here’s a quick example in Google Docs, showing a script that inserts a specific symbol wherever your cursor is:</p> 787<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/heading2.gif" alt="Google Docs Apps Script" width="660" height="317" class="aligncenter size-full wp-image-8005" /></p> 788<p>We do this using Google App Scripts as follows:</p> 789<p>1. Create a new <a href="https://docs.new/" target="_blank" rel="noopener noreferrer">Google Doc</a></p> 790<p>2. Open script editor from the menu: <em>Extensions > Apps Script</em></p> 791<p>3. In the newly opened Script tab, remove all of the boilerplate code (the “myFunction” code block)</p> 792<p>4. Copy in the following code:</p> 793<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 794// code to add the custom menu 795function onOpen() { 796 const ui = DocumentApp.getUi(); 797 ui.createMenu('My Custom Menu') 798 .addItem('Insert Symbol', 'insertSymbol') 799 .addToUi(); 800} 801 802// code to insert the symbol 803function insertSymbol() { 804 // add symbol at the cursor position 805 const cursor = DocumentApp.getActiveDocument().getCursor(); 806 cursor.insertText('§§'); 807 808} 809</pre> 810<p>5. You can change the special character in this line</p> 811<p><code>cursor.insertText('§§');</code></p> 812<p>to whatever you want it to be, e.g.</p> 813<p><code>cursor.insertText('( ͡° ÍÊ Í¡Â°)');</code></p> 814<p>6. Click <strong>Save</strong> and give your script project a name (doesn’t affect the running so call it what you want e.g. Insert Symbol)</p> 815<p>7. Run the script for the first time by clicking on the menu: <code>Run > onOpen</code></p> 816<p>8. Google will recognize the script is not yet authorized and ask you if you want to continue. Click <strong>Continue</strong></p> 817<p>9. Since this the first run of the script, Google Docs asks you to authorize the script (I called my script “test” which you can see below):</p> 818<p><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-2948" src="https://www.benlcollins.com/wp-content/uploads/2016/04/auth.jpg" alt="Docs Apps Script Auth" width="800" height="432" srcset="https://www.benlcollins.com/wp-content/uploads/2016/04/auth.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2016/04/auth-300x162.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2016/04/auth-768x415.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /></p> 819<p>10. Click <strong>Allow</strong></p> 820<p>11. Return to your Google Doc now.</p> 821<p>12. You’ll have a new menu option, so click on it:</p> 822<p><code>My Custom Menu > Insert Symbol</code></p> 823<p>13. Click on Insert Symbol and you should see the symbol inserted wherever your cursor is.</p> 824<h2>Google Apps Script Tip: Use the Logger class</h2> 825<p>Use the <a href="https://developers.google.com/apps-script/reference/base/logger#logdata" target="_blank" rel="noopener noreferrer">Logger class</a> to output text messages to the log files, to help debug code.</p> 826<p>The log files are shown automatically after the program has finished running, or by going to the Executions menu in the left sidebar menu options (the fourth symbol, under the clock symbol).</p> 827<p>The syntax in its most basic form is <code>Logger.log(<em>something in here</em>)</code>. This records the value(s) of variable(s) at different steps of your program.</p> 828<p>For example, add this script to a code file your editor window:</p> 829<pre class="brush: jscript; gutter: false; title: ; notranslate" title=""> 830function logTimeRightNow() { 831 const timestamp = new Date(); 832 Logger.log(timestamp); 833} 834</pre> 835<p>Run the script in the editor window and you should see:</p> 836<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptExecutionLogs.jpg" alt="Google Apps Script Execution Logs" width="800" height="395" class="aligncenter size-full wp-image-14936" srcset="https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptExecutionLogs.jpg 800w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptExecutionLogs-300x148.jpg 300w, https://www.benlcollins.com/wp-content/uploads/2019/08/GoogleAppsScriptExecutionLogs-768x379.jpg 768w" sizes="auto, (max-width: 800px) 100v
836w, 800px" /></p> 837<h2>Real world examples from my own work</h2> 838<p>I’ve only scratched the surface of what’s possible using G.A.S. to extend the Google Apps experience.</p> 839<p>Here are a couple of interesting projects I’ve worked on:</p> 840<p>1) A Sheets/web-app consisting of a custom web form that feeds data into a Google Sheet (including uploading images to Drive and showing thumbnails in the spreadsheet), then creates a PDF copy of the data in the spreadsheet and automatically emails it to the users. And with all the data in a master Google Sheet, it’s possible to perform data analysis, <a href="https://www.benlcollins.com/spreadsheets/10-techniques-google-sheets-dashboard/" target="_blank" rel="noopener noreferrer">build dashboards</a> showing data in real-time and share/collaborate with other users.</p> 841<p>2) A dashboard that connects to a Google Analytics account, pulls in social media data, checks the website status and emails a summary screenshot as a PDF at the end of each day.</p> 842<p><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2016/04/marketingDashboardwithAppsScript.jpg" alt="Marketing dashboard using Google Apps Script" width="660" height="471" class="alignnone size-full wp-image-9854" srcset="https://www.benlcollins.com/wp-content/uploads/2016/04/marketingDashboardwithAppsScript.jpg 660w, https://www.benlcollins.com/wp-content/uploads/2016/04/marketingDashboardwithAppsScript-300x214.jpg 300w" sizes="auto, (max-width: 660px) 100vw, 660px" /></p> 843<p>3) A marking template that can send scores/feedback to students via email and Slack, with a single click from within Google Sheets. Read more in this article: <a href="https://www.benlcollins.com/spreadsheets/marking-template/" target="_blank" rel="noopener noreferrer">Save time with this custom Google Sheets, Slack & Email integration</a></p> 844<h2>My own journey into Google Apps Script</h2> 845<p>My friend Julian, from <a href="https://measureschool.com/" target="_blank" rel="noopener noreferrer">Measure School</a>, interviewed me in May 2017 about my journey into Apps Script and my thoughts on getting started:</p> 846<p><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/NmQyANq4f7k" frameborder="0" allowfullscreen></iframe></p> 847<h2>Google Apps Script Resources</h2> 848<p>For further reading, I’ve created this list of resources for information and inspiration:</p> 849<h3>Course</h3> 850<div class="note-link"><a href="https://courses.benlcollins.com/p/beginner-apps-script?coupon_code=BEGINNERSCRIPT" rel="noopener noreferrer" target="_blank"><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2023/03/BeginnerAppsScript250.jpg" alt="Beginner Apps Script" width="150" height="84" class="alignleft size-full wp-image-10144" /></a><span class="note-link-title">ð¡ Learn more</span><span class="note-link-a">Learn how to write Apps Script and turbocharge your Google Workspace experience with the new <a href="https://courses.benlcollins.com/p/beginner-apps-script?coupon_code=BEGINNERSCRIPT" rel="noopener noreferrer" target="_blank">Beginner Apps Script course</a></span></div> 851<h3>Documentation</h3> 852<p><a href="https://developers.google.com/apps-script/" target="_blank" rel="noopener noreferrer">Official Google Documentation</a></p> 853<p><a href="https://cloud.google.com/blog/topics/g-suite-developers" target="_blank" rel="noopener noreferrer">Google Workspace Developers Blog</a></p> 854<h3>Communities</h3> 855<p><a href="https://groups.google.com/forum/#!forum/google-apps-script-community" target="_blank" rel="noopener noreferrer">Google Apps Script Group</a></p> 856<p><a href="http://stackoverflow.com/questions/tagged/google-spreadsheet" target="_blank" rel="noopener noreferrer">Stack Overflow GAS questions</a></p> 857<h3>Elsewhere On The Internet</h3> 858<p>A huge big up-to-date list of Apps Script resources <a href="https://github.com/contributorpw/google-apps-script-awesome-list" rel="noopener" target="_blank">hosted on GitHub</a>.</p> 859<p>For general Javascript questions, I recommend this <a href="https://www.w3schools.com/js/default.asp" rel="noopener" target="_blank">JavaScript tutorial page from W3 Schools</a> when you’re starting out.<br /> 860â<br /> 861When you’re more comfortable with Javascript basics, then I recommend the comprehensive <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener" target="_blank">JavaScript documentation from Mozilla</a>.</p> 862<p>Imagination and patience to learn are the only limits to what you can do and where you can go with GAS. I hope you feel inspired to try extending your Sheets and Docs and automate those boring, repetitive tasks!</p> 863<h2>Related Articles</h2> 864<div class="related-articles"><a href="https://www.benlcollins.com/spreadsheets/google-sheets-macros/" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/02/appsScriptMacro200.jpg" alt="Google Sheets Macros" width="200" height="161" class="alignleft size-full wp-image-10153" /></a><a href="https://www.benlcollins.com/spreadsheets/google-sheets-macros/" target="_blank" rel="noopener noreferrer"><strong>The Complete Guide to Simple Automation using Google Sheets Macros</strong></a><br /> 865Google Sheets Macros are small programs you create without needing any code. You record your actions so you can repeat them and save yourself time!</div> 866<div class="related-articles"> 867<hr> 868</div> 869<div class="related-articles"><a href="https://www.benlcollins.com/apps-script/api-tutorial-for-beginners/" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/02/appsScriptAPI200.jpg" alt="Apps Script with APIs" width="200" height="162" class="alignleft size-full wp-image-10152" /></a><a href="https://www.benlcollins.com/apps-script/api-tutorial-for-beginners/" target="_blank" rel="noopener noreferrer"><strong>Beginner guide to APIs with Google Sheets & Google Apps Script</strong></a><br /> 870How to connect to your very first external APIs with Google Apps Script to retrieve data from third parties and display it in your Google Sheet.</div> 871<div class="related-articles"> 872<hr> 873</div> 874<div class="related-articles"><a href="https://www.benlcollins.com/spreadsheets/saving-data-in-google-sheets/" target="_blank" rel="noopener noreferrer"><img loading="lazy" decoding="async" src="https://www.benlcollins.com/wp-content/uploads/2019/02/appsScriptSaveData200.jpg" alt="Save Data with Apps Script" width="200" height="162" class="alignleft size-full wp-image-10154" /></a><a href="https://www.benlcollins.com/spreadsheets/saving-data-in-google-sheets/" target="_blank" rel="noopener noreferrer"><strong>Saving data in Google Sheets with Google Apps Script</strong></a><br /> 875Learn how to use a few lines of Apps Script code to quickly and easily save your data in Google Sheets. You can even schedule backups automatically!</div> 876 </div><!-- .entry-content --> 877 878 879 <footer class="entry-footer"> 880 <span class="posted-on"><span class="screen-reader-text">Posted on </span><a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/" rel="bookmark"><time class="entry-date published" datetime="2021-04-16T09:00:25-04:00">April 16, 2021</time><time class="updated" datetime="2026-04-03T07:27:52-04:00">April 3, 2026</time></a></span><span class="byline"><span class="screen-reader-text">Author </span><span class="author vcard"><a class="url fn n" href="https://www.benlcollins.com/author/benlcollins/">Ben</a></span></span><span class="cat-links"><span class="screen-reader-text">Categories </span><a href="https://www.benlcollins.com/category/apps-script/" rel="category tag">Apps Script</a></span><span class="tags-links"><span class="screen-reader-text">Tags </span><a href="https://www.benlcollins.com/tag/apps-script/" rel="tag">Apps Script</a>, <a href="https://www.benlcollins.com/tag/dashboard/" rel="tag">dashboard</a>, <a href="https://www.benlcollins.com/tag/google-sheets/" rel="tag">Google Sheets</a></span> </footer><!-- .entry-footer --> 881 882</article><!-- #post-2905 --> 883 884<div id="comments" class="comments-area"> 885 886 <h2 class="comments-title"> 887 127 thoughts on “Google Apps Script: A Beginner’s Guide” </h2> 888 889 890 <ol class="comment-list">
891 <li id="comment-8643" class="comment even thread-even depth-1 parent"> 892 <article id="div-comment-8643" class="comment-body"> 893 <footer class="comment-meta"> 894 <div class="comment-author vcard"> 895 <img alt='' src='https://secure.gravatar.com/avatar/983c8eda9889cbfea5e4ed76088bb664718d9fa7f2f572a55a396efce2c7be37?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/983c8eda9889cbfea5e4ed76088bb664718d9fa7f2f572a55a396efce2c7be37?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="http://www.google.cn" class="url" rel="ugc external nofollow">Jane</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 896 897 <div class="comment-metadata"> 898 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-8643"><time datetime="2016-06-01T10:32:44-04:00">June 1, 2016 at 10:32 am</time></a> </div><!-- .comment-metadata --> 899 900 </footer><!-- .comment-meta --> 901 902 <div class="comment-content"> 903 <p>I couldn’t resist commenting. Exceptionally well<br /> 904written!</p> 905 </div><!-- .comment-content --> 906 907 </article><!-- .comment-body --> 908 <ol class="children"> 909 <li id="comment-8651" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2 parent"> 910 <article id="div-comment-8651" class="comment-body"> 911 <footer class="comment-meta"> 912 <div class="comment-author vcard"> 913 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 914 915 <div class="comment-metadata"> 916 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-8651"><time datetime="2016-06-01T15:06:56-04:00">June 1, 2016 at 3:06 pm</time></a> </div><!-- .comment-metadata --> 917 918 </footer><!-- .comment-meta --> 919 920 <div class="comment-content"> 921 <p>Thank you!</p> 922 </div><!-- .comment-content --> 923 924 </article><!-- .comment-body --> 925 <ol class="children"> 926 <li id="comment-56266" class="comment even depth-3 parent"> 927 <article id="div-comment-56266" class="comment-body"> 928 <footer class="comment-meta"> 929 <div class="comment-author vcard"> 930 <img alt='' src='https://secure.gravatar.com/avatar/0f514621b6fb65a0073127dd579ee652113540dd0658e86a9efa2de0c2b6a691?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/0f514621b6fb65a0073127dd579ee652113540dd0658e86a9efa2de0c2b6a691?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Rishu</b> <span class="says">says:</span> </div><!-- .comment-author --> 931 932 <div class="comment-metadata"> 933 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-56266"><time datetime="2018-03-14T04:53:29-04:00">March 14, 2018 at 4:53 am</time></a> </div><!-- .comment-metadata --> 934 935 </footer><!-- .comment-meta --> 936 937 <div class="comment-content"> 938 <p>Hey Ben,</p> 939<p>I am facing error in code for calculating distance between 2 points</p> 940<p> Cannot read property “legs” from undefined. (line 11, file “Code”)<br /> 941Can you please help</p> 942 </div><!-- .comment-content --> 943 944 </article><!-- .comment-body --> 945 <ol class="children"> 946 <li id="comment-64538" class="comment odd alt depth-4 parent"> 947 <article id="div-comment-64538" class="comment-body"> 948 <footer class="comment-meta"> 949 <div class="comment-author vcard"> 950 <img alt='' src='https://secure.gravatar.com/avatar/8db5075ded4f770be6070799ab30c8b5893030101b81bf65ed4455e382280814?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/8db5075ded4f770be6070799ab30c8b5893030101b81bf65ed4455e382280814?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">OldNerd</b> <span class="says">says:</span> </div><!-- .comment-author --> 951 952 <div class="comment-metadata"> 953 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-64538"><time datetime="2018-07-12T14:19:20-04:00">July 12, 2018 at 2:19 pm</time></a> </div><!-- .comment-metadata --> 954 955 </footer><!-- .comment-meta --> 956 957 <div class="comment-content"> 958 <p>@Rishu, were you able to fix it? I’m facing the same problem. Strangely enough it doesn’t happen all the time, script works several times and then suddenly starts giving the error. I have searched the web and it seems to be a recurring problem with no definite answer. Any help will be appreciated.<br /> 959Regards</p> 960 </div><!-- .comment-content --> 961 962 </article><!-- .comment-body --> 963 <ol class="children">
964 <li id="comment-64914" class="comment even depth-5"> 965 <article id="div-comment-64914" class="comment-body"> 966 <footer class="comment-meta"> 967 <div class="comment-author vcard"> 968 <img alt='' src='https://secure.gravatar.com/avatar/e90fcc477cfc16ee368c8da681601398114212b8058ed5e8025eb39051e1594a?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e90fcc477cfc16ee368c8da681601398114212b8058ed5e8025eb39051e1594a?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Jack</b> <span class="says">says:</span> </div><!-- .comment-author --> 969 970 <div class="comment-metadata"> 971 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-64914"><time datetime="2018-07-25T01:30:47-04:00">July 25, 2018 at 1:30 am</time></a> </div><!-- .comment-metadata --> 972 973 </footer><!-- .comment-meta --> 974 975 <div class="comment-content"> 976 <p>We need to have Google Cloud credential to enable the Maps API in order for us to continue using the API</p> 977 </div><!-- .comment-content --> 978 979 </article><!-- .comment-body --> 980 </li><!-- #comment-## --> 981</ol><!-- .children --> 982</li><!-- #comment-## --> 983 <li id="comment-146829" class="comment odd alt depth-4"> 984 <article id="div-comment-146829" class="comment-body"> 985 <footer class="comment-meta"> 986 <div class="comment-author vcard"> 987 <img alt='' src='https://secure.gravatar.com/avatar/1225364d1704a6faa9fe8ce1da7b38f6e2c397d11eea52c003b57e0090127425?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1225364d1704a6faa9fe8ce1da7b38f6e2c397d11eea52c003b57e0090127425?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ahmed</b> <span class="says">says:</span> </div><!-- .comment-author --> 988 989 <div class="comment-metadata"> 990 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-146829"><time datetime="2021-01-15T12:18:27-05:00">January 15, 2021 at 12:18 pm</time></a> </div><!-- .comment-metadata --> 991 992 </footer><!-- .comment-meta --> 993 994 <div class="comment-content"> 995 <p>Me too for some reason</p> 996 </div><!-- .comment-content --> 997 998 </article><!-- .comment-body --> 999 </li><!-- #comment-## --> 1000</ol><!-- .children --> 1001</li><!-- #comment-## --> 1002 <li id="comment-70478" class="comment even depth-3 parent"> 1003 <article id="div-comment-70478" class="comment-body"> 1004 <footer class="comment-meta"> 1005 <div class="comment-author vcard"> 1006 <img alt='' src='https://secure.gravatar.com/avatar/5bb4fa9f0facf6feeb8bcc07e3835e92a67ee6e3f36e87136f57d9d146cbbafb?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/5bb4fa9f0facf6feeb8bcc07e3835e92a67ee6e3f36e87136f57d9d146cbbafb?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Cromwel</b> <span class="says">says:</span> </div><!-- .comment-author --> 1007 1008 <div class="comment-metadata"> 1009 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-70478"><time datetime="2018-11-06T05:57:52-05:00">November 6, 2018 at 5:57 am</time></a> </div><!-- .comment-metadata --> 1010 1011 </footer><!-- .comment-meta --> 1012 1013 <div class="comment-content"> 1014 <p>Hi Ben,</p> 1015<p>How far did you get with project number 1 above. Kindly share a tutorial.</p> 1016 </div><!-- .comment-content --> 1017 1018 </article><!-- .comment-body --> 1019 <ol class="children"> 1020 <li id="comment-73672" class="comment odd alt depth-4"> 1021 <article id="div-comment-73672" class="comment-body"> 1022 <footer class="comment-meta"> 1023 <div class="comment-author vcard"> 1024 <img alt='' src='https://secure.gravatar.com/avatar/6700be797feb34b587c9154667bd23ddd2e5a2249e648f4e79f0280b7ffd52fb?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/6700be797feb34b587c9154667bd23ddd2e5a2249e648f4e79f0280b7ffd52fb?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Letter Head</b> <span class="says">says:</span> </div><!-- .comment-author --> 1025 1026 <div class="comment-metadata"> 1027 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-73672"><time datetime="2018-11-29T20:33:21-05:00">November 29, 2018 at 8:33 pm</time></a> </div><!-- .comment-metadata --> 1028 1029 </footer><!-- .comment-meta --> 1030 1031 <div class="comment-content"> 1032 <p>Hi Ben – Awesome work! Like Cromwel, I would love to hear more on your project#1. Thank y
1032ou for sharing.</p> 1033 </div><!-- .comment-content --> 1034 1035 </article><!-- .comment-body --> 1036 </li><!-- #comment-## --> 1037</ol><!-- .children --> 1038</li><!-- #comment-## --> 1039 <li id="comment-213363" class="comment even depth-3"> 1040 <article id="div-comment-213363" class="comment-body"> 1041 <footer class="comment-meta"> 1042 <div class="comment-author vcard"> 1043 <img alt='' src='https://secure.gravatar.com/avatar/f42e7d761dda23a2250731b172a53a23e253e32e6f4a3bae9166fa35a263e54d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/f42e7d761dda23a2250731b172a53a23e253e32e6f4a3bae9166fa35a263e54d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Nani</b> <span class="says">says:</span> </div><!-- .comment-author --> 1044 1045 <div class="comment-metadata"> 1046 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-213363"><time datetime="2022-07-03T13:00:38-04:00">July 3, 2022 at 1:00 pm</time></a> </div><!-- .comment-metadata --> 1047 1048 </footer><!-- .comment-meta --> 1049 1050 <div class="comment-content"> 1051 <p>Hi is there print preview command in Google sheet.. by getrange(‘a:b’) I want to print a certain range</p> 1052 </div><!-- .comment-content --> 1053 1054 </article><!-- .comment-body --> 1055 </li><!-- #comment-## --> 1056</ol><!-- .children --> 1057</li><!-- #comment-## --> 1058</ol><!-- .children --> 1059</li><!-- #comment-## --> 1060 <li id="comment-9502" class="comment odd alt thread-odd thread-alt depth-1 parent"> 1061 <article id="div-comment-9502" class="comment-body"> 1062 <footer class="comment-meta"> 1063 <div class="comment-author vcard"> 1064 <img alt='' src='https://secure.gravatar.com/avatar/cd0861da499ea5ad7e14abfd9b55c65fef90762ebe2239cd83e715436778940d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/cd0861da499ea5ad7e14abfd9b55c65fef90762ebe2239cd83e715436778940d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Armando</b> <span class="says">says:</span> </div><!-- .comment-author --> 1065 1066 <div class="comment-metadata"> 1067 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-9502"><time datetime="2016-07-12T19:08:26-04:00">July 12, 2016 at 7:08 pm</time></a> </div><!-- .comment-metadata --> 1068 1069 </footer><!-- .comment-meta --> 1070 1071 <div class="comment-content"> 1072 <p>Hi, Im writing some code in google script, but when I open de file, my script doesn’t work until the first minute i Think, its like there is a delay before the script really respond to my calls on buttons, do you know why is this happening?</p> 1073 </div><!-- .comment-content --> 1074 1075 </article><!-- .comment-body --> 1076 <ol class="children"> 1077 <li id="comment-9505" class="comment byuser comment-author-benlcollins bypostauthor even depth-2"> 1078 <article id="div-comment-9505" class="comment-body"> 1079 <footer class="comment-meta"> 1080 <div class="comment-author vcard"> 1081 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1082 1083 <div class="comment-metadata"> 1084 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-9505"><time datetime="2016-07-12T22:16:12-04:00">July 12, 2016 at 10:16 pm</time></a> </div><!-- .comment-metadata --> 1085 1086 </footer><!-- .comment-meta --> 1087 1088 <div class="comment-content"> 1089 <p>Hi Armando, </p> 1090<p>Hmm, there shouldn’t be any substantial delay, certainly not a minute. The script could be affected by your internet connection speed, but I wouldn’t expect to see such a big delay, especially if other web services load normally.</p> 1091<p>Inefficient code, i.e. lots of calls to/from the Google Sheets or other Google services, can make a script run slowly, so it’s best practice to minimize the number of calls required. More reading here at the official Apps Script docs: <a href="https://developers.google.com/apps-script/best_practices" rel="nofollow ugc">https://developers.google.com/apps-script/best_practices</a></p> 1092<p>I suggest sharing your question/code on the Apps Script forum here: <a href="https://plus.google.com/u/0/communities/102471985047225101769" rel="nofollow ugc">https://plus.google.com/u/0/communities/102471985047225101769</a> where there’s a community of experts who can suggest specific fixes.</p> 1093<p>Hope that helps.</p> 1094<p>Ben</p> 1095 </div><!-- .comment-content --> 1096 1097 </article><!-- .comment-body --> 1098 </li><!-- #comment-## --> 1099</ol><!-- .children --> 1100</li><!-- #comment-## -->
1101 <li id="comment-12160" class="comment odd alt thread-even depth-1"> 1102 <article id="div-comment-12160" class="comment-body"> 1103 <footer class="comment-meta"> 1104 <div class="comment-author vcard"> 1105 <img alt='' src='https://secure.gravatar.com/avatar/d4a91745b10b25d20a628d573e5df923f79f5e4bd7b8565407c21228a27202e8?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d4a91745b10b25d20a628d573e5df923f79f5e4bd7b8565407c21228a27202e8?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">vishal</b> <span class="says">says:</span> </div><!-- .comment-author --> 1106 1107 <div class="comment-metadata"> 1108 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-12160"><time datetime="2016-09-28T08:45:14-04:00">September 28, 2016 at 8:45 am</time></a> </div><!-- .comment-metadata --> 1109 1110 </footer><!-- .comment-meta --> 1111 1112 <div class="comment-content"> 1113 <p>hi, i want to track a user who copy, cut, or delete the more then 10 cells at once, please provide me a code or a way how can i do it</p> 1114 </div><!-- .comment-content --> 1115 1116 </article><!-- .comment-body --> 1117 </li><!-- #comment-## --> 1118 <li id="comment-13127" class="comment even thread-odd thread-alt depth-1 parent"> 1119 <article id="div-comment-13127" class="comment-body"> 1120 <footer class="comment-meta"> 1121 <div class="comment-author vcard"> 1122 <img alt='' src='https://secure.gravatar.com/avatar/95bba1868c1f7f25d70a03f21e20f8bcd87a26a6e65b5ccfdd2ada08fce8f497?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/95bba1868c1f7f25d70a03f21e20f8bcd87a26a6e65b5ccfdd2ada08fce8f497?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sat</b> <span class="says">says:</span> </div><!-- .comment-author --> 1123 1124 <div class="comment-metadata"> 1125 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-13127"><time datetime="2016-10-26T02:58:00-04:00">October 26, 2016 at 2:58 am</time></a> </div><!-- .comment-metadata --> 1126 1127 </footer><!-- .comment-meta --> 1128 1129 <div class="comment-content"> 1130 <p>Hi, Ben,<br /> 1131Thanks for very well written article that even a beginner like myself could understand! What resources/training courses/tutorials on Google App scripts you would advise to a person that have no previous knowledge of programming.<br /> 1132Thanks,<br /> 1133Sat</p> 1134 </div><!-- .comment-content --> 1135 1136 </article><!-- .comment-body --> 1137 <ol class="children"> 1138 <li id="comment-13384" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 1139 <article id="div-comment-13384" class="comment-body"> 1140 <footer class="comment-meta"> 1141 <div class="comment-author vcard"> 1142 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1143 1144 <div class="comment-metadata"> 1145 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-13384"><time datetime="2016-11-01T17:17:56-04:00">November 1, 2016 at 5:17 pm</time></a> </div><!-- .comment-metadata --> 1146 1147 </footer><!-- .comment-meta --> 1148 1149 <div class="comment-content"> 1150 <p>Hi Sat, there’s a list of resources at the end of this post which is where I’d start. Then try creating your own scripts and googling for answers when things don’t work. The forums are very helpful at answering specific questions.</p> 1151<p>Cheers,<br /> 1152Ben</p> 1153 </div><!-- .comment-content --> 1154 1155 </article><!-- .comment-body --> 1156 </li><!-- #comment-## --> 1157</ol><!-- .children --> 1158</li><!-- #comment-## -->
1159 <li id="comment-17176" class="comment even thread-even depth-1 parent"> 1160 <article id="div-comment-17176" class="comment-body"> 1161 <footer class="comment-meta"> 1162 <div class="comment-author vcard"> 1163 <img alt='' src='https://secure.gravatar.com/avatar/55760f5cc6f5e6af71efc781c24e79dc6777a7d3d9ab81244aeb3e0d5b2421a3?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/55760f5cc6f5e6af71efc781c24e79dc6777a7d3d9ab81244aeb3e0d5b2421a3?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Marwane BERRIS</b> <span class="says">says:</span> </div><!-- .comment-author --> 1164 1165 <div class="comment-metadata"> 1166 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-17176"><time datetime="2017-01-19T14:32:08-05:00">January 19, 2017 at 2:32 pm</time></a> </div><!-- .comment-metadata --> 1167 1168 </footer><!-- .comment-meta --> 1169 1170 <div class="comment-content"> 1171 <p>Hi, I’m french, so excuse me for my approximate English …<br /> 1172I’ve tested your “Custom function/maps example” paragraph, but I’ve an error !<br /> 1173When I validate the formula in spreadsheet it says: TypeError: Unable to read the “legs” property from undefined. (Line 12).</p> 1174<p>Can you help me ??</p> 1175<p>Thx</p> 1176 </div><!-- .comment-content --> 1177 1178 </article><!-- .comment-body --> 1179 <ol class="children"> 1180 <li id="comment-18771" class="comment odd alt depth-2 parent"> 1181 <article id="div-comment-18771" class="comment-body"> 1182 <footer class="comment-meta"> 1183 <div class="comment-author vcard"> 1184 <img alt='' src='https://secure.gravatar.com/avatar/3a23bb75edd85af1a7fcd4ebe19108339fda745e580b98191e74151d390b9a5b?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/3a23bb75edd85af1a7fcd4ebe19108339fda745e580b98191e74151d390b9a5b?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="http://www.studiamirabilium.com" class="url" rel="ugc external nofollow">Sebastian Marquez</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 1185 1186 <div class="comment-metadata"> 1187 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-18771"><time datetime="2017-02-17T16:42:12-05:00">February 17, 2017 at 4:42 pm</time></a> </div><!-- .comment-metadata --> 1188 1189 </footer><!-- .comment-meta --> 1190 1191 <div class="comment-content"> 1192 <p>Here’s an answer I found if your still having trouble from <a href="http://www.gadgetsappshacks.com/2014/02/calculating-distance-between-two.html" rel="nofollow ugc">http://www.gadgetsappshacks.com/2014/02/calculating-distance-between-two.html</a>:<br /> 1193———<br /> 1194This happens if the cell being referenced by the function (e.g. cell A8 in the pubic spreadsheet I provided) is made an invalid location (e.g. “XASD*&^”). So perhaps one of our locations isn’t something that Google Maps can uniquely identify as a location. Try cut/pasting it into maps.google.com to see how it responds.<br /> 1195———-</p> 1196<p>My script was doing the same thing until I opened up Google Maps </p> 1197 </div><!-- .comment-content --> 1198 1199 </article><!-- .comment-body --> 1200 <ol class="children"> 1201 <li id="comment-18829" class="comment byuser comment-author-benlcollins bypostauthor even depth-3"> 1202 <article id="div-comment-18829" class="comment-body"> 1203 <footer class="comment-meta"> 1204 <div class="comment-author vcard"> 1205 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1206 1207 <div class="comment-metadata"> 1208 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-18829"><time datetime="2017-02-18T18:52:10-05:00">February 18, 2017 at 6:52 pm</time></a> </div><!-- .comment-metadata --> 1209 1210 </footer><!-- .comment-meta --> 1211 1212 <div class="comment-content"> 1213 <p>Thanks for sharing your solution Sebastian!</p> 1214 </div><!-- .comment-content --> 1215 1216 </article><!-- .comment-body --> 1217 </li><!-- #comment-## -->
1218 <li id="comment-30684" class="comment odd alt depth-3 parent"> 1219 <article id="div-comment-30684" class="comment-body"> 1220 <footer class="comment-meta"> 1221 <div class="comment-author vcard"> 1222 <img alt='' src='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Gary Miller</b> <span class="says">says:</span> </div><!-- .comment-author --> 1223 1224 <div class="comment-metadata"> 1225 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-30684"><time datetime="2017-04-26T05:23:08-04:00">April 26, 2017 at 5:23 am</time></a> </div><!-- .comment-metadata --> 1226 1227 </footer><!-- .comment-meta --> 1228 1229 <div class="comment-content"> 1230 <p>I found that if the location is one of several that would be returned from a Maps search, an error is displayed. No real surprise there. You have to specify enough detail to make it unique. Here in the UK I was searching for ‘Dover’, but until I put ‘Dover, Kent’ the distance was not displayed.</p> 1231 </div><!-- .comment-content --> 1232 1233 </article><!-- .comment-body --> 1234 <ol class="children"> 1235 <li id="comment-31125" class="comment byuser comment-author-benlcollins bypostauthor even depth-4"> 1236 <article id="div-comment-31125" class="comment-body"> 1237 <footer class="comment-meta"> 1238 <div class="comment-author vcard"> 1239 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1240 1241 <div class="comment-metadata"> 1242 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-31125"><time datetime="2017-05-02T10:22:27-04:00">May 2, 2017 at 10:22 am</time></a> </div><!-- .comment-metadata --> 1243 1244 </footer><!-- .comment-meta --> 1245 1246 <div class="comment-content"> 1247 <p>Interesting, thanks for sharing Gary. I’ve never taken this function beyond this very basic example for illustration, but clearly you could improve the error handling and give this kind of feedback to a user. Cheers!</p> 1248 </div><!-- .comment-content --> 1249 1250 </article><!-- .comment-body --> 1251 </li><!-- #comment-## --> 1252</ol><!-- .children --> 1253</li><!-- #comment-## --> 1254</ol><!-- .children --> 1255</li><!-- #comment-## --> 1256</ol><!-- .children --> 1257</li><!-- #comment-## --> 1258 <li id="comment-18604" class="comment odd alt thread-odd thread-alt depth-1 parent"> 1259 <article id="div-comment-18604" class="comment-body"> 1260 <footer class="comment-meta"> 1261 <div class="comment-author vcard"> 1262 <img alt='' src='https://secure.gravatar.com/avatar/f715371710939112c96de773bb9bc93ecc730a4a3d20fc5acd93fc4e563d318f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/f715371710939112c96de773bb9bc93ecc730a4a3d20fc5acd93fc4e563d318f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Stefano</b> <span class="says">says:</span> </div><!-- .comment-author --> 1263 1264 <div class="comment-metadata"> 1265 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-18604"><time datetime="2017-02-15T08:16:42-05:00">February 15, 2017 at 8:16 am</time></a> </div><!-- .comment-metadata --> 1266 1267 </footer><!-- .comment-meta --> 1268 1269 <div class="comment-content"> 1270 <p>Hi Ben,</p> 1271<p>this article is really interesting.</p> 1272<p>I found the dashboard that connects to a Google Analytics account, pulls in social media data, checks the website status and emails really amazing and extremely useful. Do you plan to share it or to make a tutorial on how to built a dashboard like that?</p> 1273<p>Thanks,<br /> 1274Stefano</p> 1275 </div><!-- .comment-content --> 1276 1277 </article><!-- .comment-body --> 1278 <ol class="children">
1279 <li id="comment-18608" class="comment byuser comment-author-benlcollins bypostauthor even depth-2"> 1280 <article id="div-comment-18608" class="comment-body"> 1281 <footer class="comment-meta"> 1282 <div class="comment-author vcard"> 1283 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1284 1285 <div class="comment-metadata"> 1286 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-18608"><time datetime="2017-02-15T09:22:42-05:00">February 15, 2017 at 9:22 am</time></a> </div><!-- .comment-metadata --> 1287 1288 </footer><!-- .comment-meta --> 1289 1290 <div class="comment-content"> 1291 <p>Hey Stefano,</p> 1292<p>That dashboard is covered in depth in the online dashboard course I’m launching….next week (20th Feb)! I walk through how to create it step-by-step, including the apps scripting.</p> 1293<p>P.S. There’ll be a special offer for newsletter subscribers next week (<a href="https://www.benlcollins.com/spreadsheets/ebook/" target="_blank">
1293sign up form at the end of this page here</a>).</p> 1294<p>Cheers,<br /> 1295Ben</p> 1296 </div><!-- .comment-content --> 1297 1298 </article><!-- .comment-body --> 1299 </li><!-- #comment-## --> 1300</ol><!-- .children --> 1301</li><!-- #comment-## --> 1302 <li id="comment-19434" class="comment odd alt thread-even depth-1"> 1303 <article id="div-comment-19434" class="comment-body"> 1304 <footer class="comment-meta"> 1305 <div class="comment-author vcard"> 1306 <img alt='' src='https://secure.gravatar.com/avatar/4fc6b74acdaec0bdf51357be47e845162a3ba4ed004f519b9e9c69ad37e0c57f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4fc6b74acdaec0bdf51357be47e845162a3ba4ed004f519b9e9c69ad37e0c57f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Augustiine Agbi</b> <span class="says">says:</span> </div><!-- .comment-author --> 1307 1308 <div class="comment-metadata"> 1309 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-19434"><time datetime="2017-02-27T07:47:32-05:00">February 27, 2017 at 7:47 am</time></a> </div><!-- .comment-metadata --> 1310 1311 </footer><!-- .comment-meta --> 1312 1313 <div class="comment-content"> 1314 <p>Very interesting. Am in dire need to learn how to develop a mobile app for e-learning/assessment. However, I don’t have knowledge of programming. I will appreciate if I can get a step by step guide on programming. Thanks. Augustine</p> 1315 </div><!-- .comment-content --> 1316 1317 </article><!-- .comment-body --> 1318 </li><!-- #comment-## --> 1319 <li id="comment-24209" class="comment even thread-odd thread-alt depth-1"> 1320 <article id="div-comment-24209" class="comment-body"> 1321 <footer class="comment-meta"> 1322 <div class="comment-author vcard"> 1323 <img alt='' src='https://secure.gravatar.com/avatar/84e4c84b7574ea596b1fb1df2ca2e1552aeb7332255f739589e7d5cd4df563df?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/84e4c84b7574ea596b1fb1df2ca2e1552aeb7332255f739589e7d5cd4df563df?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="http://motuandpatlugames.in/" class="url" rel="ugc external nofollow">motuandpatlugames.in</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 1324 1325 <div class="comment-metadata"> 1326 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-24209"><time datetime="2017-03-27T19:11:45-04:00">March 27, 2017 at 7:11 pm</time></a> </div><!-- .comment-metadata --> 1327 1328 </footer><!-- .comment-meta --> 1329 1330 <div class="comment-content"> 1331 <p>Very good information. Lucky me I found your blog by accident (stumbleupon).<br /> 1332I have saved it for later!</p> 1333 </div><!-- .comment-content --> 1334 1335 </article><!-- .comment-body --> 1336 </li><!-- #comment-## --> 1337 <li id="comment-24820" class="comment odd alt thread-even depth-1 parent"> 1338 <article id="div-comment-24820" class="comment-body"> 1339 <footer class="comment-meta"> 1340 <div class="comment-author vcard"> 1341 <img alt='' src='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Gary Miller</b> <span class="says">says:</span> </div><!-- .comment-author --> 1342 1343 <div class="comment-metadata"> 1344 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-24820"><time datetime="2017-03-30T09:19:22-04:00">March 30, 2017 at 9:19 am</time></a> </div><!-- .comment-metadata --> 1345 1346 </footer><!-- .comment-meta --> 1347 1348 <div class="comment-content"> 1349 <p>I get an error: Cannot call Browser.msgBox() from this context; have you tried Logger.log() instead? (line 2, file “Code”) when I try to run the Hello World script. Failing at the first attempt does not feel good. Do you know
1349what the problem is?</p> 1350 </div><!-- .comment-content --> 1351 1352 </article><!-- .comment-body --> 1353 <ol class="children"> 1354 <li id="comment-24898" class="comment byuser comment-author-benlcollins bypostauthor even depth-2 parent"> 1355 <article id="div-comment-24898" class="comment-body"> 1356 <footer class="comment-meta"> 1357 <div class="comment-author vcard"> 1358 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1359 1360 <div class="comment-metadata"> 1361 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-24898"><time datetime="2017-03-30T16:00:16-04:00">March 30, 2017 at 4:00 pm</time></a> </div><!-- .comment-metadata --> 1362 1363 </footer><!-- .comment-meta --> 1364 1365 <div class="comment-content"> 1366 <p>Hmm, not sure. Did you get the Authorization Required popup? What’s the exact error message you’re getting? The popup will show up in your Sheet browser tab, not the code editor tab, so you need to return to that one to the Hello World message.</p> 1367 </div><!-- .comment-content --> 1368 1369 </article><!-- .comment-body --> 1370 <ol class="children"> 1371 <li id="comment-25030" class="comment odd alt depth-3 parent"> 1372 <article id="div-comment-25030" class="comment-body"> 1373 <footer class="comment-meta"> 1374 <div class="comment-author vcard"> 1375 <img alt='' src='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Gary Miller</b> <span class="says">says:</span> </div><!-- .comment-author --> 1376 1377 <div class="comment-metadata"> 1378 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-25030"><time datetime="2017-03-31T05:30:20-04:00">March 31, 2017 at 5:30 am</time></a> </div><!-- .comment-metadata --> 1379 1380 </footer><!-- .comment-meta --> 1381 1382 <div class="comment-content"> 1383 <p>I did not get the authorisation pop up when I ran the script. However, i have tried it today and hit the debug icon, instead of run. This DID produce the authorisation pop up, and the function has run fine. Curious behaviour!</p> 1384 </div><!-- .comment-content --> 1385 1386 </article><!-- .comment-body --> 1387 <ol class="children"> 1388 <li id="comment-25085" class="comment byuser comment-author-benlcollins bypostauthor even depth-4"> 1389 <article id="div-comment-25085" class="comment-body"> 1390 <footer class="comment-meta"> 1391 <div class="comment-author vcard"> 1392 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1393 1394 <div class="comment-metadata"> 1395 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-25085"><time datetime="2017-03-31T10:50:16-04:00">March 31, 2017 at 10:50 am</time></a> </div><!-- .comment-metadata --> 1396 1397 </footer><!-- .comment-meta --> 1398 1399 <div class="comment-content"> 1400 <p>Yes, that is strange! Great it’s working for you now ð</p> 1401 </div><!-- .comment-content --> 1402 1403 </article><!-- .comment-body --> 1404 </li><!-- #comment-## --> 1405</ol><!-- .children --> 1406</li><!-- #comment-## --> 1407</ol><!-- .children --> 1408</li><!-- #comment-## -->
1409 <li id="comment-173983" class="comment odd alt depth-2"> 1410 <article id="div-comment-173983" class="comment-body"> 1411 <footer class="comment-meta"> 1412 <div class="comment-author vcard"> 1413 <img alt='' src='https://secure.gravatar.com/avatar/7414ee6f59a5e884b205487fba02604f25f9a95ea4c71244746a428eaf06f490?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/7414ee6f59a5e884b205487fba02604f25f9a95ea4c71244746a428eaf06f490?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://github.com/stgran" class="url" rel="ugc external nofollow">Soren Gran</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 1414 1415 <div class="comment-metadata"> 1416 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-173983"><time datetime="2021-09-01T16:53:30-04:00">September 1, 2021 at 4:53 pm</time></a> </div><!-- .comment-metadata --> 1417 1418 </footer><!-- .comment-meta --> 1419 1420 <div class="comment-content"> 1421 <p>I also encountered this error. My issue is that I created my script in Google Apps Script, so my script wasn’t directly tied to any Google Sheet. To fix this, I went to the Google Sheet in which I wanted this code to run, clicked on the Tools dropdown menu, and clicked on “Script editor”. This took me to a new Google Apps Script project that was directly tied to that Google Sheet. I was able to run this code successfully by following these steps.</p> 1422 </div><!-- .comment-content --> 1423 1424 </article><!-- .comment-body --> 1425 </li><!-- #comment-## --> 1426</ol><!-- .children --> 1427</li><!-- #comment-## --> 1428 <li id="comment-28606" class="pingback even thread-odd thread-alt depth-1"> 1429 <div class="comment-body"> 1430 Pingback: <a href="https://www.benlcollins.com/dashboard/ejunkie/" class="url" rel="ugc">How to build a real-time sales dashboard for E-junkie with Google Sheets and Apps Script</a> </div> 1431 </li><!-- #comment-## --> 1432 <li id="comment-37893" class="comment odd alt thread-even depth-1"> 1433 <article id="div-comment-37893" class="comment-body"> 1434 <footer class="comment-meta"> 1435 <div class="comment-author vcard"> 1436 <img alt='' src='https://secure.gravatar.com/avatar/e0385c904e9f5002dc9529eb4fe9daa25bea90d8455aaedc353839216418d0ab?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e0385c904e9f5002dc9529eb4fe9daa25bea90d8455aaedc353839216418d0ab?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://sites.google.com/view/maryscornerit" class="url" rel="ugc external nofollow">Robert L. Crocker</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 1437 1438 <div class="comment-metadata"> 1439 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-37893"><time datetime="2017-06-26T14:19:22-04:00">June 26, 2017 at 2:19 pm</time></a> </div><!-- .comment-metadata --> 1440 1441 </footer><!-- .comment-meta --> 1442 1443 <div class="comment-content"> 1444 <p>Very useful info..</p> 1445<p>Had one weird problem when I tried the first UI example..</p> 1446<p>When I created the menu as you did</p> 1447<p>e.g.</p> 1448<p> var ui = SpreadsheetApp.getUi();<br /> 1449 ui.createMenu(‘My Custom Menu’)<br /> 1450 .addItem(‘Say Hello’, ‘helloWorld’)<br /> 1451 .addToUi();</p> 1452<p>I got a “.createMenu undefined” error…</p> 1453<p>didn’t shake the error message until I rewrote to</p> 1454<p> var ui = SpreadsheetApp.getUi().createMenu(‘MyMenu’)<br /> 1455 .addItem(‘Hello There’, ‘helloWorld’)<br /> 1456 .addToUi();<br /> 1457and it all worked fine.<br /> 1458Have no idea what the difference is.</p> 1459<p>I’ve had this kind of thing happen before in app script though…<br /> 1460in particular when I was testing for results less than a particular variable using var1 0 and everything worked OK.</p> 1461<p> so it’s good to teach multiple ways of doing the same thing.</p> 1462 </div><!-- .comment-content --> 1463 1464 </article><!-- .comment-body --> 1465 </li><!-- #comment-## -->
1466 <li id="comment-38117" class="comment even thread-odd thread-alt depth-1"> 1467 <article id="div-comment-38117" class="comment-body"> 1468 <footer class="comment-meta"> 1469 <div class="comment-author vcard"> 1470 <img alt='' src='https://secure.gravatar.com/avatar/e5671f5e1eafbb7ad3a26d72397a3554fd1e895b47522de17bef7b92601a8cbb?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e5671f5e1eafbb7ad3a26d72397a3554fd1e895b47522de17bef7b92601a8cbb?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Nihar</b> <span class="says">says:</span> </div><!-- .comment-author --> 1471 1472 <div class="comment-metadata"> 1473 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-38117"><time datetime="2017-06-29T01:42:20-04:00">June 29, 2017 at 1:42 am</time></a> </div><!-- .comment-metadata --> 1474 1475 </footer><!-- .comment-meta --> 1476 1477 <div class="comment-content"> 1478 <p>Great Post<br /> 1479Thanks a lot it helped me a lot<br /> 1480I am also going to share it to my friends and over my social media.<br /> 1481Also,<br /> 1482Hackr.io is a great platform to find and share the best tutorials and they have a specific page for Google apps script</p> 1483<p>This might be useful to your readers: <a href="https://hackr.io/tutorials/learn-google-apps-scripts" rel="nofollow ugc">https://hackr.io/tutorials/learn-google-apps-scripts</a></p> 1484 </div><!-- .comment-content --> 1485 1486 </article><!-- .comment-body --> 1487 </li><!-- #comment-## --> 1488 <li id="comment-38686" class="comment odd alt thread-even depth-1 parent"> 1489 <article id="div-comment-38686" class="comment-body"> 1490 <footer class="comment-meta"> 1491 <div class="comment-author vcard"> 1492 <img alt='' src='https://secure.gravatar.com/avatar/3a05517743773ab814e74b10c18ea6c85be66a749f660f6c5f1a5866b1fe6ec4?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/3a05517743773ab814e74b10c18ea6c85be66a749f660f6c5f1a5866b1fe6ec4?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Shilpa</b> <span class="says">says:</span> </div><!-- .comment-author --> 1493 1494 <div class="comment-metadata"> 1495 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-38686"><time datetime="2017-07-05T01:12:14-04:00">July 5, 2017 at 1:12 am</time></a> </div><!-- .comment-metadata --> 1496 1497 </footer><!-- .comment-meta --> 1498 1499 <div class="comment-content"> 1500 <p>Hi,<br /> 1501We have a container bound script and would like to password protect the Script Editor.Is there any way to do this or a workaround available to ensure that only the developer can access the Script Editor?</p> 1502 </div><!-- .comment-content --> 1503 1504 </article><!-- .comment-body --> 1505 <ol class="children"> 1506 <li id="comment-131693" class="comment even depth-2"> 1507 <article id="div-comment-131693" class="comment-body"> 1508 <footer class="comment-meta"> 1509 <div class="comment-author vcard"> 1510 <img alt='' src='https://secure.gravatar.com/avatar/1a8a587c0eea4cbcf12f97453b883f814ebb115ae05efcb0ccf06c543caed125?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1a8a587c0eea4cbcf12f97453b883f814ebb115ae05efcb0ccf06c543caed125?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Masi</b> <span class="says">says:</span> </div><!-- .comment-author --> 1511 1512 <div class="comment-metadata"> 1513 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-131693"><time datetime="2020-06-03T03:30:27-04:00">June 3, 2020 at 3:30 am</time></a> </div><!-- .comment-metadata --> 1514 1515 </footer><!-- .comment-meta --> 1516 1517 <div class="comment-content"> 1518 <p>I’m looking for the answer too! and I can not find it after 3 years. Is there any way?</p> 1519 </div><!-- .comment-content --> 1520 1521 </article><!-- .comment-body --> 1522 </li><!-- #comment-## --> 1523</ol><!-- .children --> 1524</li><!-- #comment-## -->
1525 <li id="comment-43045" class="comment odd alt thread-odd thread-alt depth-1 parent"> 1526 <article id="div-comment-43045" class="comment-body"> 1527 <footer class="comment-meta"> 1528 <div class="comment-author vcard"> 1529 <img alt='' src='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Mike T</b> <span class="says">says:</span> </div><!-- .comment-author --> 1530 1531 <div class="comment-metadata"> 1532 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-43045"><time datetime="2017-08-23T14:34:29-04:00">August 23, 2017 at 2:34 pm</time></a> </div><!-- .comment-metadata --> 1533 1534 </footer><!-- .comment-meta --> 1535 1536 <div class="comment-content"> 1537 <p>This is awesome – Thanks!</p> 1538<p>I’m running in to an error with the Map distance problem.<br />
1539It initially worked, and then when I tried it again with new values, it stated:<br /> 1540“TypeError: Cannot read property “legs” from undefined.”</p> 1541<p>Even when I put the old values back in, it would no longer work.</p> 1542<p>Any suggestions?</p> 1543 </div><!-- .comment-content --> 1544 1545 </article><!-- .comment-body --> 1546 <ol class="children"> 1547 <li id="comment-43502" class="comment byuser comment-author-benlcollins bypostauthor even depth-2 parent"> 1548 <article id="div-comment-43502" class="comment-body"> 1549 <footer class="comment-meta"> 1550 <div class="comment-author vcard"> 1551 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1552 1553 <div class="comment-metadata"> 1554 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-43502"><time datetime="2017-08-28T11:31:43-04:00">August 28, 2017 at 11:31 am</time></a> </div><!-- .comment-metadata --> 1555 1556 </footer><!-- .comment-meta --> 1557 1558 <div class="comment-content"> 1559 <p>Hey Mike,</p> 1560<p>Have a look at this comment thread further up the post: <a href="https://www.benlcollins.com/spreadsheets/starting-gas/#comment-17176" rel="ugc">https://www.benlcollins.com/spreadsheets/starting-gas/#comment-17176</a></p> 1561<p>It’s most likely caused by ambiguity in the leg, which this basic function isn’t able to deal with.</p> 1562<p>Cheers,<br /> 1563Ben</p> 1564 </div><!-- .comment-content --> 1565 1566 </article><!-- .comment-body --> 1567 <ol class="children"> 1568 <li id="comment-43517" class="comment odd alt depth-3"> 1569 <article id="div-comment-43517" class="comment-body"> 1570 <footer class="comment-meta"> 1571 <div class="comment-author vcard"> 1572 <img alt='' src='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Mike T</b> <span class="says">says:</span> </div><!-- .comment-author --> 1573 1574 <div class="comment-metadata"> 1575 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-43517"><time datetime="2017-08-28T13:24:45-04:00">August 28, 2017 at 1:24 pm</time></a> </div><!-- .comment-metadata --> 1576 1577 </footer><!-- .comment-meta --> 1578 1579 <div class="comment-content"> 1580 <p>Thanks for the quick reply!</p> 1581<p>The strange thing is that even the two points that initially worked and returned the distance, also stopped working after I tried other destinations. It only worked the first time and then everything seemed to break.</p> 1582 </div><!-- .comment-content --> 1583 1584 </article><!-- .comment-body --> 1585 </li><!-- #comment-## --> 1586</ol><!-- .children --> 1587</li><!-- #comment-## --> 1588</ol><!-- .children --> 1589</li><!-- #comment-## --> 1590 <li id="comment-44157" class="comment even thread-even depth-1 parent"> 1591 <article id="div-comment-44157" class="comment-body"> 1592 <footer class="comment-meta"> 1593 <div class="comment-author vcard"> 1594 <img alt='' src='https://secure.gravatar.com/avatar/c2626286b3d40dd16f96cbe0f53fd285f3f54ef8adf2d702a98047759968fb89?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/c2626286b3d40dd16f96cbe0f53fd285f3f54ef8adf2d702a98047759968fb89?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Steven De Roover</b> <span class="says">says:</span> </div><!-- .comment-author --> 1595 1596 <div class="comment-metadata"> 1597 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-44157"><time datetime="2017-09-04T06:30:27-04:00">September 4, 2017 at 6:30 am</time></a> </div><!-- .comment-metadata --> 1598 1599 </footer><!-- .comment-meta --> 1600 1601 <div class="comment-content"> 1602 <p>What a lovely article. I’m just starting to explore all the possibilities of Google App Scripting. I don’t have any main goal yet, so I’m just fiddling around a bit.</p> 1603<p>For starters I’d like to know whatever is possible with an app inside a google site, and I didn’t find any documentation on how to implement custom UI controls on the properties on the embedded app.<br /> 1604To clarify: I add a script in my google site, then on a page I add a “Google Script App”
1604, and add that script I just made. Then for that added ‘widget’, you can click on the edit button. I’d like to know how to add my custom settings on that page.</p> 1605<p>I know it’s possible, as other existing widgets can do this too.</p> 1606<p>Any help on this one?</p> 1607 </div><!-- .comment-content --> 1608 1609 </article><!-- .comment-body --> 1610 <ol class="children"> 1611 <li id="comment-44320" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 1612 <article id="div-comment-44320" class="comment-body"> 1613 <footer class="comment-meta"> 1614 <div class="comment-author vcard"> 1615 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1616 1617 <div class="comment-metadata"> 1618 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-44320"><time datetime="2017-09-05T16:38:46-04:00">September 5, 2017 at 4:38 pm</time></a> </div><!-- .comment-metadata --> 1619 1620 </footer><!-- .comment-meta --> 1621 1622 <div class="comment-content"> 1623 <p>Hey Steven,</p> 1624<p>I’ve never used Google Sites, so I’m not sure the answer to your question. I’d suggest posting your question to the Google Apps Script forum where I’m sure someone will have some input: <a href="https://plus.google.com/u/0/communities/102471985047225101769" rel="nofollow ugc">https://plus.google.com/u/0/communities/102471985047225101769</a></p> 1625<p>Cheers,<br /> 1626Ben</p> 1627 </div><!-- .comment-content --> 1628 1629 </article><!-- .comment-body --> 1630 </li><!-- #comment-## --> 1631</ol><!-- .children --> 1632</li><!-- #comment-## --> 1633 <li id="comment-44401" class="pingback even thread-odd thread-alt depth-1"> 1634 <div class="comment-body"> 1635 Pingback: <a href="https://www.benlcollins.com/data-studio/community-connector/" class="url" rel="ugc">Community Connectors: Native data connectors for Google Data Studio</a> </div> 1636 </li><!-- #comment-## --> 1637 <li id="comment-49011" class="pingback odd alt thread-even depth-1"> 1638 <div class="comment-body"> 1639 Pingback: <a href="https://www.benlcollins.com/spreadsheets/index-sheet/" class="url" rel="ugc">How to add a hyperlinked index sheet to your large Google Sheet workbooks - Ben Collins</a> </div> 1640 </li><!-- #comment-## --> 1641 <li id="comment-50695" class="comment even thread-odd thread-alt depth-1 parent"> 1642 <article id="div-comment-50695" class="comment-body"> 1643 <footer class="comment-meta"> 1644 <div class="comment-author vcard"> 1645 <img alt='' src='https://secure.gravatar.com/avatar/d355d68a15db4041fc79a47e764b12f62285e59d25b163f542c7f23f30233922?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d355d68a15db4041fc79a47e764b12f62285e59d25b163f542c7f23f30233922?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Brian Pugh</b> <span class="says">says:</span> </div><!-- .comment-author --> 1646 1647 <div class="comment-metadata"> 1648 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-50695"><time datetime="2017-11-21T12:53:08-05:00">November 21, 2017 at 12:53 pm</time></a> </div><!-- .comment-metadata --> 1649 1650 </footer><!-- .comment-meta --> 1651 1652 <div class="comment-content"> 1653 <p>I am new to scripting. I have 12 functions in a single script. I cannot find a suitable answer to this question:</p> 1654<p>How can I link my scripts so that all 12 run sequentially?</p> 1655<p>Thank you very much!</p> 1656 </div><!-- .comment-content --> 1657 1658 </article><!-- .comment-body --> 1659 <ol class="children"> 1660 <li id="comment-51170" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 1661 <article id="div-comment-51170" class="comment-body"> 1662 <footer class="comment-meta"> 1663 <div class="comment-author vcard"> 1664 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1665 1666 <div class="comment-metadata"> 1667 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-51170"><time datetime="2017-11-28T12:52:57-05:00">November 28, 2017 at 12:52 pm</time></a> </div><!-- .comment-metadata --> 1668 1669 </footer><!-- .comment-meta --> 1670 1671 <div class="comment-content"> 1672 <p>Hey Brian,</p> 1673<p>I can understand your frustration, I was there once too ð</p> 1674<p>You can call your 12 functions inside another, sort of master execution function, if you will, like this:</p> 1675<p><code>function runFuncs() {<br /> 1676 // put your 12 functions in here...<br /> 1677 func1();<br /> 1678 func2();<br /> 1679 // etc...<br /> 1680}</p> 1681<p>function func1() {<br /> 1682 Logger.log("Hello!")<br /> 1683}</p> 1684<p>function func2() {<br /> 1685 Logger.log("Goodbye!");<br /> 1686}</code></p> 1687<p>where func1 and func2 would be the first two of your 12 functions. When you run runFuncs(), it will execute those functions inside of it, func1 and func2 in this case, but could be all your 12.</p> 1688<p>Hope that helps!</p> 1689<p>Ben</p> 1690 </div><!-- .comment-content --> 1691 1692 </article><!-- .comment-body --> 1693 </li><!-- #comment-## --> 1694</ol><!-- .children --> 1695</li><!-- #comment-## -->
1696 <li id="comment-51698" class="comment even thread-even depth-1 parent"> 1697 <article id="div-comment-51698" class="comment-body"> 1698 <footer class="comment-meta"> 1699 <div class="comment-author vcard"> 1700 <img alt='' src='https://secure.gravatar.com/avatar/bf6a6f75e200404263b62720a0f0f9d4e75b83609017bf5b3a07ce2d795d6016?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/bf6a6f75e200404263b62720a0f0f9d4e75b83609017bf5b3a07ce2d795d6016?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Abdul Sami</b> <span class="says">says:</span> </div><!-- .comment-author --> 1701 1702 <div class="comment-metadata"> 1703 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-51698"><time datetime="2017-12-07T06:12:55-05:00">December 7, 2017 at 6:12 am</time></a> </div><!-- .comment-metadata --> 1704 1705 </footer><!-- .comment-meta --> 1706 1707 <div class="comment-content"> 1708 <p>I am a new user to google sheets and I love working with excel automation and advance excel. I searched about google sheet programming, and your this article become very beneficial to me. </p> 1709<p>Great work!</p> 1710 </div><!-- .comment-content --> 1711 1712 </article><!-- .comment-body --> 1713 <ol class="children"> 1714 <li id="comment-56281" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 1715 <article id="div-comment-56281" class="comment-body"> 1716 <footer class="comment-meta"> 1717 <div class="comment-author vcard"> 1718 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1719 1720 <div class="comment-metadata"> 1721 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-56281"><time datetime="2018-03-14T12:05:41-04:00">March 14, 2018 at 12:05 pm</time></a> </div><!-- .comment-metadata --> 1722 1723 </footer><!-- .comment-meta --> 1724 1725 <div class="comment-content"> 1726 <p>Thanks Abdul!</p> 1727 </div><!-- .comment-content --> 1728 1729 </article><!-- .comment-body --> 1730 </li><!-- #comment-## --> 1731</ol><!-- .children --> 1732</li><!-- #comment-## --> 1733 <li id="comment-56268" class="pingback even thread-odd thread-alt depth-1"> 1734 <div class="comment-body"> 1735 Pingback: <a href="https://www.benlcollins.com/spreadsheets/slow-google-sheets/" class="url" rel="ugc">Slow Google Sheets? Here are 27 techniques you can try right now</a> </div> 1736 </li><!-- #comment-## --> 1737 <li id="comment-56489" class="pingback odd alt thread-even depth-1"> 1738 <div class="comment-body"> 1739 Pingback: <a href="https://www.benlcollins.com/apps-script/teachable-certificates/" class="url" rel="ugc">Automatically issue Teachable course certificates with Apps Script</a> </div> 1740 </li><!-- #comment-## --> 1741 <li id="comment-65228" class="comment even thread-odd thread-alt depth-1"> 1742 <article id="div-comment-65228" class="comment-body"> 1743 <footer class="comment-meta"> 1744 <div class="comment-author vcard"> 1745 <img alt='' src='https://secure.gravatar.com/avatar/1edd2303598f3feada2d48bb1145154fdf2226fa6621d1bd8455d74bcf80f10a?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1edd2303598f3feada2d48bb1145154fdf2226fa6621d1bd8455d74bcf80f10a?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Gert-Jan M. Stoop</b> <span class="says">says:</span> </div><!-- .comment-author --> 1746 1747 <div class="comment-metadata"> 1748 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-65228"><time datetime="2018-08-03T16:56:36-04:00">August 3, 2018 at 4:56 pm</time></a> </div><!-- .comment-metadata --> 1749 1750 </footer><!-- .comment-meta --> 1751 1752 <div class="comment-content"> 1753 <p>
1753Hey Ben, I have a real beginner’s question.<br /> 1754How do I get the “suggestion screen” on screen when I’m typing code. I have a Chromebook. </p> 1755<p>Thanks for your answer.<br /> 1756Gert-Jan</p> 1757 </div><!-- .comment-content --> 1758 1759 </article><!-- .comment-body --> 1760 </li><!-- #comment-## --> 1761 <li id="comment-65283" class="pingback odd alt thread-even depth-1"> 1762 <div class="comment-body"> 1763 Pingback: <a href="https://whylearntocode.wordpress.com/2018/08/06/coding-day-4-100/" class="url" rel="ugc external nofollow">Coding Day 4 / 100 – Why learn to code?</a> </div> 1764 </li><!-- #comment-## --> 1765 <li id="comment-65563" class="comment even thread-odd thread-alt depth-1 parent"> 1766 <article id="div-comment-65563" class="comment-body"> 1767 <footer class="comment-meta"> 1768 <div class="comment-author vcard"> 1769 <img alt='' src='https://secure.gravatar.com/avatar/c824c4adca3f13ed74515b5916ebba1529e9225c10158c9378054382c4183011?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/c824c4adca3f13ed74515b5916ebba1529e9225c10158c9378054382c4183011?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Varun</b> <span class="says">says:</span> </div><!-- .comment-author --> 1770 1771 <div class="comment-metadata"> 1772 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-65563"><time datetime="2018-08-13T02:14:27-04:00">August 13, 2018 at 2:14 am</time></a> </div><!-- .comment-metadata --> 1773 1774 </footer><!-- .comment-meta --> 1775 1776 <div class="comment-content"> 1777 <p>Hi Ben, I am using getcharts() to retrieve and save a manually produced chart in google sheets. I keep getting a google server error ‘We’re sorry, a server error occurred. Please wait a bit and try again. (line 4, file “Code”)’. The code is below – can you please help me with what I am doing wrong? Is it because the chart was not created with GAS in the first place?<br /> 1778function myFunction()<br /> 1779{ var spreadsheet1=SpreadsheetApp.getActive();<br /> 1780 var sheet = spreadsheet1.getSheets()[0]; // grabs active sheet<br /> 1781 var chartvarun = sheet.getCharts(); // grabs the first chart on the sheet<br /> 1782 var file = DriveApp.createFile(chart.getBlob()); // saves it as a file<br /> 1783}</p> 1784 </div><!-- .comment-content --> 1785 1786 </article><!-- .comment-body --> 1787 <ol class="children"> 1788 <li id="comment-66955" class="comment odd alt depth-2"> 1789 <article id="div-comment-66955" class="comment-body"> 1790 <footer class="comment-meta"> 1791 <div class="comment-author vcard"> 1792 <img alt='' src='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ike</b> <span class="says">says:</span> </div><!-- .comment-author --> 1793 1794 <div class="comment-metadata"> 1795 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-66955"><time datetime="2018-09-13T05:09:03-04:00">September 13, 2018 at 5:09 am</time></a> </div><!-- .comment-metadata --> 1796 1797 </footer><!-- .comment-meta --> 1798 1799 <div class="comment-content"> 1800 <p>@Varun – were you able to solve this? I am getting the same error. Strangely, I am using the identical code on two sheets and only get an error on one.</p> 1801 </div><!-- .comment-content --> 1802 1803 </article><!-- .comment-body --> 1804 </li><!-- #comment-## --> 1805 <li id="comment-66956" class="comment even depth-2"> 1806 <article id="div-comment-66956" class="comment-body"> 1807 <footer class="comment-meta"> 1808 <div class="comment-author vcard"> 1809 <img alt='' src='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ike</b> <span class="says">says:</span> </div><!-- .comment-author --> 1810 1811 <div class="comment-metadata"> 1812 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-66956"><time datetime="2018-09-13T05:22:05-04:00">September 13, 2018 at 5:22 am</time></a> </div><!-- .comment-metadata --> 1813 1814 </footer><!-- .comment-meta --> 1815 1816 <div class="comment-content"> 1817 <p>@Varun or Ben – did this problem ever get resolved? I’m having the same issue and can’t find the solution online. Thanks!</p> 1818 </div><!-- .comment-content --> 1819 1820 </article><!-- .comment-body --> 1821 </li><!-- #comment-## --> 1822</ol><!-- .children --> 1823</li><!-- #comment-## -->
1824 <li id="comment-65909" class="comment odd alt thread-even depth-1"> 1825 <article id="div-comment-65909" class="comment-body"> 1826 <footer class="comment-meta"> 1827 <div class="comment-author vcard"> 1828 <img alt='' src='https://secure.gravatar.com/avatar/d9a41a24a7f9bc3e6c312b86a4ac09861eca7bd202b24e596a0eef2ac9ad686d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d9a41a24a7f9bc3e6c312b86a4ac09861eca7bd202b24e596a0eef2ac9ad686d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Serena Alt</b> <span class="says">says:</span> </div><!-- .comment-author --> 1829 1830 <div class="comment-metadata"> 1831 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-65909"><time datetime="2018-08-19T09:47:55-04:00">August 19, 2018 at 9:47 am</time></a> </div><!-- .comment-metadata --> 1832 1833 </footer><!-- .comment-meta --> 1834 1835 <div class="comment-content"> 1836 <p>Hi Ben,</p> 1837<p>I am a junior programmer and my company has asked me to do some google docs work that I have never touched before. Since we are a small company I would love to hear your input…<br /> 1838Can you advise how I would export cvs data from an excel sheet/url to a google doc? I need it automated to occur once a week. </p> 1839<p>Thanks!<br /> 1840Serena</p> 1841 </div><!-- .comment-content --> 1842 1843 </article><!-- .comment-body --> 1844 </li><!-- #comment-## --> 1845 <li id="comment-66552" class="comment even thread-odd thread-alt depth-1"> 1846 <article id="div-comment-66552" class="comment-body"> 1847 <footer class="comment-meta"> 1848 <div class="comment-author vcard"> 1849 <img alt='' src='https://secure.gravatar.com/avatar/6e0ee33c8284d6f61e8a8e8e094d5c2469a8eb19907afa64cd00aebb456f7b2c?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/6e0ee33c8284d6f61e8a8e8e094d5c2469a8eb19907afa64cd00aebb456f7b2c?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Dario</b> <span class="says">says:</span> </div><!-- .comment-author --> 1850 1851 <div class="comment-metadata"> 1852 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-66552"><time datetime="2018-08-31T05:36:04-04:00">August 31, 2018 at 5:36 am</time></a> </div><!-- .comment-metadata --> 1853 1854 </footer><!-- .comment-meta --> 1855 1856 <div class="comment-content"> 1857 <p>I have search for a language refernece card for keywords, srtuctures and I could not find yet but some fragments. Any idea where I could find a refcard, a cheat card, thank you</p> 1858 </div><!-- .comment-content --> 1859 1860 </article><!-- .comment-body --> 1861 </li><!-- #comment-## --> 1862 <li id="comment-66560" class="comment odd alt thread-even depth-1 parent"> 1863 <article id="div-comment-66560" class="comment-body"> 1864 <footer class="comment-meta"> 1865 <div class="comment-author vcard"> 1866 <img alt='' src='https://secure.gravatar.com/avatar/d18256bee9408d2e6a5dea914a1a076b9cb0bb0c9a2dc4bd6a4110ff0c2c90ad?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d18256bee9408d2e6a5dea914a1a076b9cb0bb0c9a2dc4bd6a4110ff0c2c90ad?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Abraham Felix</b> <span class="says">says:</span> </div><!-- .comment-author --> 1867 1868 <div class="comment-metadata"> 1869 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-66560"><time datetime="2018-08-31T13:40:43-04:00">August 31, 2018 at 1:40 pm</time></a> </div><!-- .comment-metadata --> 1870 1871 </footer><!-- .comment-meta --> 1872 1873 <div class="comment-content"> 1874 <p>Hello i tried to code the example but i keep gettign this error: </p> 1875<p>Cannot call Browser.msgBox() from this context; have you tried Logger.log() instead? (line 2, file “Code”)<br /> 1876—————————————————————————-<br /> 1877function myFunction() {<br /> 1878 Browser.msgBox(“hello”);<br /> 1879}</p> 1880 </div><!-- .comment-content --> 1881 1882 </article><!-- .comment-body --> 1883 <ol class="children">
1884 <li id="comment-73671" class="comment even depth-2 parent"> 1885 <article id="div-comment-73671" class="comment-body"> 1886 <footer class="comment-meta"> 1887 <div class="comment-author vcard"> 1888 <img alt='' src='https://secure.gravatar.com/avatar/c8bbc70cd4a0258db70b6981d85aff5093df92f4898c185910be1a2dea4f0d54?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/c8bbc70cd4a0258db70b6981d85aff5093df92f4898c185910be1a2dea4f0d54?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Kevin Bartlett</b> <span class="says">says:</span> </div><!-- .comment-author --> 1889 1890 <div class="comment-metadata"> 1891 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-73671"><time datetime="2018-11-29T19:41:28-05:00">November 29, 2018 at 7:41 pm</time></a> </div><!-- .comment-metadata --> 1892 1893 </footer><!-- .comment-meta --> 1894 1895 <div class="comment-content"> 1896 <p>I get the same error as Abraham Felix: ‘Cannot call Browser.msgBox() from this context; have you tried Logger.log() instead? (line 2, file âCodeâ)’.</p> 1897<p>The Authorization window DID pop up, and I even got an email from Google saying “HelloWorld was granted access to your Google account”, but I still get the ‘Cannot call Browser.msgBox’ error.</p> 1898<p>As someone pointed out above, getting an error in “Hello World” does not feel encouraging.</p> 1899 </div><!-- .comment-content --> 1900 1901 </article><!-- .comment-body --> 1902 <ol class="children"> 1903 <li id="comment-73700" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-3"> 1904 <article id="div-comment-73700" class="comment-body"> 1905 <footer class="comment-meta"> 1906 <div class="comment-author vcard"> 1907 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1908 1909 <div class="comment-metadata"> 1910 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-73700"><time datetime="2018-11-30T10:26:04-05:00">November 30, 2018 at 10:26 am</time></a> </div><!-- .comment-metadata --> 1911 1912 </footer><!-- .comment-meta --> 1913 1914 <div class="comment-content"> 1915 <p>Hey Abraham/Kevin,</p> 1916<p>Are you running this script from the code editor of a Google Sheet? The browser class is only available to Google Sheets, not Docs, Sites, Forms etc.</p> 1917<p>I just tested it again for me and it works, so not sure why it’s not for you. </p> 1918<p>Alternative first script: You can change the code to:</p> 1919<p><code>function myFunction() {<br /> 1920 Logger.log("Hello World!");<br /> 1921}</code></p> 1922<p>and then go to the menu <strong>View > Logs</strong> in your script editor window to see the message.</p> 1923<p>Cheers,<br /> 1924Ben</p> 1925 </div><!-- .comment-content --> 1926 1927 </article><!-- .comment-body --> 1928 </li><!-- #comment-## --> 1929</ol><!-- .children --> 1930</li><!-- #comment-## --> 1931</ol><!-- .children --> 1932</li><!-- #comment-## --> 1933 <li id="comment-67257" class="pingback even thread-odd thread-alt depth-1"> 1934 <div class="comment-body"> 1935 Pingback: <a href="https://questetra.com/blog/start-workflow-form-google-calendar/" class="url" rel="ugc external nofollow">How to Start Workflow by Events of Google Calendar - Questetra</a> </div> 1936 </li><!-- #comment-## --> 1937 <li id="comment-73811" class="pingback odd alt thread-even depth-1"> 1938 <div class="comment-body"> 1939 Pingback: <a href="https://www.benlcollins.com/spreadsheets/macros/" class="url" rel="ugc">Macros: Add the power of automation to your Sheets without any code</a> </div> 1940 </li><!-- #comment-## -->
1941 <li id="comment-73869" class="comment even thread-odd thread-alt depth-1"> 1942 <article id="div-comment-73869" class="comment-body"> 1943 <footer class="comment-meta"> 1944 <div class="comment-author vcard"> 1945 <img alt='' src='https://secure.gravatar.com/avatar/143fc1e44bb914e6de6d80ac128f4831d4320fde5c688451a38139d6993f8007?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/143fc1e44bb914e6de6d80ac128f4831d4320fde5c688451a38139d6993f8007?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">HeavyDuty</b> <span class="says">says:</span> </div><!-- .comment-author --> 1946 1947 <div class="comment-metadata"> 1948 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-73869"><time datetime="2018-12-04T13:17:10-05:00">December 4, 2018 at 1:17 pm</time></a> </div><!-- .comment-metadata --> 1949 1950 </footer><!-- .comment-meta --> 1951 1952 <div class="comment-content"> 1953 <p>how do you do a if then statement</p> 1954 </div><!-- .comment-content --> 1955 1956 </article><!-- .comment-body --> 1957 </li><!-- #comment-## --> 1958 <li id="comment-73944" class="comment odd alt thread-even depth-1"> 1959 <article id="div-comment-73944" class="comment-body"> 1960 <footer class="comment-meta"> 1961 <div class="comment-author vcard"> 1962 <img alt='' src='https://secure.gravatar.com/avatar/e793b2c57ca3a7d7b95a9212b244855eadac2dab6010d9c2c2730c8843e8ae1d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e793b2c57ca3a7d7b95a9212b244855eadac2dab6010d9c2c2730c8843e8ae1d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Fernando</b> <span class="says">says:</span> </div><!-- .comment-author --> 1963 1964 <div class="comment-metadata"> 1965 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-73944"><time datetime="2018-12-06T09:23:29-05:00">December 6, 2018 at 9:23 am</time></a> </div><!-- .comment-metadata --> 1966 1967 </footer><!-- .comment-meta --> 1968 1969 <div class="comment-content"> 1970 <p>I was reading your post and I really enjoyed it. One quick question. Is there any way to overwrite the same file on Google Drive? I have been reading about it, but everybody mentions that Google uses IDs and that’s why is not an easy way to overwrite a file.<br /> 1971Thanks for your post.</p> 1972 </div><!-- .comment-content --> 1973 1974 </article><!-- .comment-body --> 1975 </li><!-- #comment-## --> 1976 <li id="comment-74293" class="comment even thread-odd thread-alt depth-1 parent"> 1977 <article id="div-comment-74293" class="comment-body"> 1978 <footer class="comment-meta"> 1979 <div class="comment-author vcard"> 1980 <img alt='' src='https://secure.gravatar.com/avatar/15e400a117b9bf8958d7f95db4b7e7622dece5cd9b1560a54c16a62a877424f3?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/15e400a117b9bf8958d7f95db4b7e7622dece5cd9b1560a54c16a62a877424f3?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Jamie Anderson</b> <span class="says">says:</span> </div><!-- .comment-author --> 1981 1982 <div class="comment-metadata"> 1983 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-74293"><time datetime="2018-12-15T18:02:32-05:00">December 15, 2018 at 6:02 pm</time></a> </div><!-- .comment-metadata --> 1984 1985 </footer><!-- .comment-meta --> 1986 1987 <div class="comment-content"> 1988 <p>I just found this post and I am so excited to use this for my students. I usually ran multiple mail merges within Word but this is going to save me time since my gradebook is in Google!! Do you have any more articles specifically for teachers?</p> 1989 </div><!-- .comment-content --> 1990 1991 </article><!-- .comment-body --> 1992 <ol class="children"> 1993 <li id="comment-74300" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 1994 <article id="div-comment-74300" class="comment-body"> 1995 <footer class="comment-meta"> 1996 <div class="comment-author vcard"> 1997 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 1998 1999 <div class="comment-metadata"> 2000 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-74300"><time datetime="2018-12-15T19:27:03-05:00">December 15, 2018 at 7:27 pm</time></a> </div><!-- .comment-metadata --> 2001 2002 </footer><!-- .comment-meta --> 2003 2004 <div class="comment-content"> 2005 <p>At the moment, just this one specifically for teachers: <a href="https://www.benlcollins.com/spreadsheets/marking-template/" rel="ugc">https://www.benlcollins.com/spreadsheets/marking-template/</a></p> 2006<p>Maybe some in 2019 too!</p> 2007 </div><!-- .comment-content --> 2008 2009 </article><!-- .comment-body --> 2010 </li><!-- #comment-## --> 2011</ol><!-- .children --> 2012</li><!-- #comment-## -->
2013 <li id="comment-74389" class="comment even thread-even depth-1 parent"> 2014 <article id="div-comment-74389" class="comment-body"> 2015 <footer class="comment-meta"> 2016 <div class="comment-author vcard"> 2017 <img alt='' src='https://secure.gravatar.com/avatar/b60beb5bc5df7472b902869cb1bf0b44da50bed32a68fc648560e435d73f66df?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b60beb5bc5df7472b902869cb1bf0b44da50bed32a68fc648560e435d73f66df?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="http://www.andrewroberts.net" class="url" rel="ugc external nofollow">Andrew Roberts</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2018 2019 <div class="comment-metadata"> 2020 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-74389"><time datetime="2018-12-18T10:33:38-05:00">December 18, 2018 at 10:33 am</time></a> </div><!-- .comment-metadata --> 2021 2022 </footer><!-- .comment-meta --> 2023 2024 <div class="comment-content"> 2025 <p>Your famous dude! I just stumbled across this article – <a href="https://blog.markgrowth.com/this-google-spreadsheets-guru-makes-4-000-a-month-on-online-courses-bcda90ddd9e1" rel="nofollow ugc">https://blog.markgrowth.com/this-google-spreadsheets-guru-makes-4-000-a-month-on-online-courses-bcda90ddd9e1</a> – and at the end I thought “hang-on, that name rings a bell. It’s <i>that</i> Ben Collins. Glad to hear the business is going well. I’ve been migrating up towards the GSheet UI rather than being down of the depths of “server-side” Apps Script, and been really enjoying clients with more business/systems analysis and getting GSheets working for them, so I’ll be spending some time on your site learning a bit more about GSheet formulas. Great site by the way. And thanks again for the link ð</p> 2026 </div><!-- .comment-content --> 2027 2028 </article><!-- .comment-body --> 2029 <ol class="children"> 2030 <li id="comment-74417" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2031 <article id="div-comment-74417" class="comment-body"> 2032 <footer class="comment-meta"> 2033 <div class="comment-author vcard"> 2034 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2035 2036 <div class="comment-metadata"> 2037 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-74417"><time datetime="2018-12-19T11:53:28-05:00">December 19, 2018 at 11:53 am</time></a> </div><!-- .comment-metadata --> 2038 2039 </footer><!-- .comment-meta --> 2040 2041 <div class="comment-content"> 2042 <p>Hey Andrew,</p> 2043<p>Haha </p> 2044 </div><!-- .comment-content --> 2045 2046 </article><!-- .comment-body --> 2047 </li><!-- #comment-## --> 2048</ol><!-- .children --> 2049</li><!-- #comment-## --> 2050 <li id="comment-75283" class="comment even thread-odd thread-alt depth-1"> 2051 <article id="div-comment-75283" class="comment-body"> 2052 <footer class="comment-meta"> 2053 <div class="comment-author vcard"> 2054 <img alt='' src='https://secure.gravatar.com/avatar/1b43eb9a326b014579c855cce19ed43d39575654cc51b4ba9cab0a5d7f3c80cc?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1b43eb9a326b014579c855cce19ed43d39575654cc51b4ba9cab0a5d7f3c80cc?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">JONATHAN CASAGRANDE SOARES</b> <span class="says">says:</span> </div><!-- .comment-author --> 2055 2056 <div class="comment-metadata"> 2057 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-75283">
2057<time datetime="2019-01-07T18:03:50-05:00">January 7, 2019 at 6:03 pm</time></a> </div><!-- .comment-metadata --> 2058 2059 </footer><!-- .comment-meta --> 2060 2061 <div class="comment-content"> 2062 <p>hello folks,</p> 2063<p>where can i found a place with the listed functions of google script?</p> 2064<p>for now i just wanted one that activated my already saved filter views.</p> 2065 </div><!-- .comment-content --> 2066 2067 </article><!-- .comment-body --> 2068 </li><!-- #comment-## --> 2069 <li id="comment-75495" class="comment odd alt thread-even depth-1"> 2070 <article id="div-comment-75495" class="comment-body"> 2071 <footer class="comment-meta"> 2072 <div class="comment-author vcard"> 2073 <img alt='' src='https://secure.gravatar.com/avatar/959439f9b18dfdda819c01ba37d6d3a369b0bf58be1f493b65737a24aab89d8b?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/959439f9b18dfdda819c01ba37d6d3a369b0bf58be1f493b65737a24aab89d8b?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">ramsey</b> <span class="says">says:</span> </div><!-- .comment-author --> 2074 2075 <div class="comment-metadata"> 2076 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-75495"><time datetime="2019-01-11T14:21:18-05:00">January 11, 2019 at 2:21 pm</time></a> </div><!-- .comment-metadata --> 2077 2078 </footer><!-- .comment-meta --> 2079 2080 <div class="comment-content"> 2081 <p>Absolutely awesome, Ben. I know I am late to game vs. the original date of this post, but I am using automation more and more in my worksheets and appreciate the extra time you take explaining how GAS comes together. I aspire to one day do the kind of work reflected in that dashboard! ::drool::</p> 2082 </div><!-- .comment-content --> 2083 2084 </article><!-- .comment-body --> 2085 </li><!-- #comment-## --> 2086 <li id="comment-85300" class="pingback even thread-odd thread-alt depth-1"> 2087 <div class="comment-body"> 2088 Pingback: <a href="https://medhieval.com/classes/hh2019/assignments/google-apps-script/" class="url" rel="ugc external nofollow">Google Apps Script – Hacking the Humanities 2019</a> </div> 2089 </li><!-- #comment-## --> 2090 <li id="comment-87389" class="comment odd alt thread-even depth-1"> 2091 <article id="div-comment-87389" class="comment-body"> 2092 <footer class="comment-meta"> 2093 <div class="comment-author vcard"> 2094 <img alt='' src='https://secure.gravatar.com/avatar/e6118913d0de1621627c3750b384cc8b92cbe35b6a47d2e9c8c55eee9a5df0f0?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e6118913d0de1621627c3750b384cc8b92cbe35b6a47d2e9c8c55eee9a5df0f0?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Matty</b> <span class="says">says:</span> </div><!-- .comment-author --> 2095 2096 <div class="comment-metadata"> 2097 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-87389"><time datetime="2019-03-15T12:24:54-04:00">March 15, 2019 at 12:24 pm</time></a> </div><!-- .comment-metadata --> 2098 2099 </footer><!-- .comment-meta --> 2100 2101 <div class="comment-content"> 2102 <p>I know this is late for me to comment now or whatever, but for some reason when I get on a project, where the script is supposed to be is blank. Tools and everything is there but the place for me to write scripts are blank and I can’t do anything on it.</p> 2103 </div><!-- .comment-content --> 2104 2105 </article><!-- .comment-body --> 2106 </li><!-- #comment-## --> 2107 <li id="comment-89262" class="comment even thread-odd thread-alt depth-1 parent"> 2108 <article id="div-comment-89262" class="comment-body"> 2109 <footer class="comment-meta"> 2110 <div class="comment-author vcard"> 2111 <img alt='' src='https://secure.gravatar.com/avatar/af0e789b440fba5714e48884776612628108df287f5572cb4fe37fe470517866?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/af0e789b440fba5714e48884776612628108df287f5572cb4fe37fe470517866?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Steve Prescott</b> <span class="says">says:</span> </div><!-- .comment-author --> 2112 2113 <div class="comment-metadata"> 2114 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-89262"><time datetime="2019-03-25T23:20:39-04:00">March 25, 2019 at 11:20 pm</time></a> </div><!-- .comment-metadata --> 2115 2116 </footer><!-- .comment-meta --> 2117 2118 <div class="comment-content"> 2119 <p>Great example, I just wish it worked. There must have been a change since it was posted. </p> 2120<p>I get the following error “Cannot call SpreadsheetApp.getUi() from this context. (line 2, file “GetCode”)”</p> 2121<p>Anyone know what to do to fix this? I just want to write something to my spreadsheet ;-(</p> 2122 </div><!-- .comment-content --> 2123 2124 </article><!-- .comment-body --> 2125 <ol class="children">
2126 <li id="comment-97009" class="comment odd alt depth-2"> 2127 <article id="div-comment-97009" class="comment-body"> 2128 <footer class="comment-meta"> 2129 <div class="comment-author vcard"> 2130 <img alt='' src='https://secure.gravatar.com/avatar/db68599ea6c703151e5df5c4327e32d8d6639256d4659d2983e67a351643e4aa?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/db68599ea6c703151e5df5c4327e32d8d6639256d4659d2983e67a351643e4aa?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Michael Barnard</b> <span class="says">says:</span> </div><!-- .comment-author --> 2131 2132 <div class="comment-metadata"> 2133 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-97009"><time datetime="2019-06-29T08:59:20-04:00">June 29, 2019 at 8:59 am</time></a> </div><!-- .comment-metadata --> 2134 2135 </footer><!-- .comment-meta --> 2136 2137 <div class="comment-content"> 2138 <p>I had similar problems until I realised it was case sensitive.</p> 2139 </div><!-- .comment-content --> 2140 2141 </article><!-- .comment-body --> 2142 </li><!-- #comment-## --> 2143</ol><!-- .children --> 2144</li><!-- #comment-## --> 2145 <li id="comment-92250" class="pingback even thread-even depth-1"> 2146 <div class="comment-body"> 2147 Pingback: <a href="https://down.co.ve/uso-de-los-comandos-slack-slash-para-enviar-datos-de-slack-a-hojas-de-google/" class="url" rel="ugc external nofollow">Uso de los comandos Slack Slash para enviar datos de Slack a hojas de Google – Down.co.ve</a> </div> 2148 </li><!-- #comment-## --> 2149 <li id="comment-92251" class="pingback odd alt thread-odd thread-alt depth-1"> 2150 <div class="comment-body"> 2151 Pingback: <a href="https://stips.wordpress.com/2019/04/10/uso-de-los-comandos-slack-slash-para-enviar-datos-de-slack-a-hojas-de-google/" class="url" rel="ugc external nofollow">Uso de los comandos Slack Slash para enviar datos de Slack a hojas de Google – stips</a> </div> 2152 </li><!-- #comment-## --> 2153 <li id="comment-93051" class="comment even thread-even depth-1"> 2154 <article id="div-comment-93051" class="comment-body"> 2155 <footer class="comment-meta"> 2156 <div class="comment-author vcard"> 2157 <img alt='' src='https://secure.gravatar.com/avatar/d5d51f866c27eba7a2689a503daca40914466ea5e82c02f6eb2d29c001521075?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d5d51f866c27eba7a2689a503daca40914466ea5e82c02f6eb2d29c001521075?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Emily</b> <span class="says">says:</span> </div><!-- .comment-author --> 2158 2159 <div class="comment-metadata"> 2160 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-93051"><time datetime="2019-04-15T00:40:17-04:00">April 15, 2019 at 12:40 am</time></a> </div><!-- .comment-metadata --> 2161 2162 </footer><!-- .comment-meta --> 2163 2164 <div class="comment-content"> 2165 <p>Hello! Amazing tutorial. I am trying to run the script for List Growth History, and am getting the following error “TypeError: Cannot call method “forEach” of undefined.” What does this mean and how can I fix it?</p> 2166<p>Thank you so much!</p> 2167<p>Best,<br /> 2168Emily</p> 2169 </div><!-- .comment-content --> 2170 2171 </article><!-- .comment-body --> 2172 </li><!-- #comment-## --> 2173 <li id="comment-94344" class="pingback odd alt thread-odd thread-alt depth-1"> 2174 <div class="comment-body"> 2175 Pingback: <a href="https://www.benlcollins.com/apps-script/apps-script-tips-for-non-developers/" class="url" rel="ugc">Google Apps Script Tips for Non-Developers - Ben Collins</a> </div> 2176 </li><!-- #comment-## --> 2177 <li id="comment-96063" class="comment even thread-even depth-1"> 2178 <article id="div-comment-96063" class="comment-body"> 2179 <footer class="comment-meta"> 2180 <div class="comment-author vcard"> 2181 <img alt='' src='https://secure.gravatar.com/avatar/836f4d08d06005bd168dcad6d71bd5fc25c114ea4e0bf343f91b61bdec3d126b?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/836f4d08d06005bd168dcad6d71bd5fc25c114ea4e0bf343f91b61bdec3d126b?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://pretaform.com/" class="url" rel="ugc external nofollow">PretaForm - Cloud Database with eForms & Workflow</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2182 2183 <div class="comment-metadata"> 2184 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-96063"><time datetime="2019-06-03T06:33:54-04:00">June 3, 2019 at 6:33 am</time></a> </div><!-- .comment-metadata --> 2185 2186 </footer><!-- .comment-meta --> 2187 2188 <div class="comment-content"> 2189 <p>Hey, thanks for the article. searched long google apps script guide. Finally found this blog helpful.</p> 2190<p>Thanks</p> 2191 </div><!-- .comment-content --> 2192 2193 </article><!-- .comment-body --> 2194 </li><!-- #comment-## -->
2195 <li id="comment-97413" class="comment odd alt thread-odd thread-alt depth-1"> 2196 <article id="div-comment-97413" class="comment-body"> 2197 <footer class="comment-meta"> 2198 <div class="comment-author vcard"> 2199 <img alt='' src='https://secure.gravatar.com/avatar/84b039446375547c80258f2d09769daef6419de1e9ec535cf5acb8f22a360e18?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/84b039446375547c80258f2d09769daef6419de1e9ec535cf5acb8f22a360e18?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Zafar</b> <span class="says">says:</span> </div><!-- .comment-author --> 2200 2201 <div class="comment-metadata"> 2202 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-97413"><time datetime="2019-07-07T14:32:03-04:00">July 7, 2019 at 2:32 pm</time></a> </div><!-- .comment-metadata --> 2203 2204 </footer><!-- .comment-meta --> 2205 2206 <div class="comment-content"> 2207 <p>Got this article very helpful Ben.<br /> 2208Please help me creating a script for google sheet. the details is;</p> 2209<p>“Google script to activate the cell on button click. Button activates the cell in which it is placed.”<br /> 2210I have a google sheet in which there is one button in one cell of each row. Each button calls a macro to insert a row below the active cell. The problem is that when I click a button it inserts the row below the active cell. Actually I want that when a particular button is clicked, that particular cell gets activated in which that button is placed. If it happens, a new row will be inserted only below the clicked button not below the active cell somewhere else. </p> 2211<p>Ben. it will be helpful if you could provide solution. Thanks in Advance.</p> 2212 </div><!-- .comment-content --> 2213 2214 </article><!-- .comment-body --> 2215 </li><!-- #comment-## --> 2216 <li id="comment-99071" class="comment even thread-even depth-1 parent"> 2217 <article id="div-comment-99071" class="comment-body"> 2218 <footer class="comment-meta"> 2219 <div class="comment-author vcard"> 2220 <img alt='' src='https://secure.gravatar.com/avatar/1b5402d534353d3ccb0b007528e26cc54440768258c37462e16d03852f3e221f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1b5402d534353d3ccb0b007528e26cc54440768258c37462e16d03852f3e221f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Em Yusoff</b> <span class="says">says:</span> </div><!-- .comment-author --> 2221 2222 <div class="comment-metadata"> 2223 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-99071"><time datetime="2019-08-08T10:48:49-04:00">August 8, 2019 at 10:48 am</time></a> </div><!-- .comment-metadata --> 2224 2225 </footer><!-- .comment-meta --> 2226 2227 <div class="comment-content"> 2228 <p>Hi Ben, I’ve been following your class on Google Sheet Functions and the video tutorials are quite self explanatory — like it so much. What kind of screen casting software you’re using for those videos… Tq!</p> 2229 </div><!-- .comment-content --> 2230 2231 </article><!-- .comment-body --> 2232 <ol class="children"> 2233 <li id="comment-99161" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2234 <article id="div-comment-99161" class="comment-body"> 2235 <footer class="comment-meta"> 2236 <div class="comment-author vcard"> 2237 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2238 2239 <div class="comment-metadata"> 2240 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-99161"><time datetime="2019-08-09T18:50:58-04:00">August 9, 2019 at 6:50 pm</time></a> </div><!-- .comment-metadata --> 2241 2242 </footer><!-- .comment-meta --> 2243 2244 <div class="comment-content"> 2245 <p>Thanks! I’m using Screenflow to record, Handbrake to shrink file size.</p> 2246 </div><!-- .comment-content --> 2247 2248 </article><!-- .comment-body --> 2249 </li><!-- #comment-## --> 2250</ol><!-- .children --> 2251</li><!-- #comment-## -->
2252 <li id="comment-99080" class="comment even thread-odd thread-alt depth-1 parent"> 2253 <article id="div-comment-99080" class="comment-body"> 2254 <footer class="comment-meta"> 2255 <div class="comment-author vcard"> 2256 <img alt='' src='https://secure.gravatar.com/avatar/9aa2f948c3aa95e8e3c6a651384b0d626f8e0d582d82cd4298c385f62701d138?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/9aa2f948c3aa95e8e3c6a651384b0d626f8e0d582d82cd4298c385f62701d138?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">John Williams</b> <span class="says">says:</span> </div><!-- .comment-author --> 2257 2258 <div class="comment-metadata"> 2259 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-99080"><time datetime="2019-08-08T11:52:25-04:00">August 8, 2019 at 11:52 am</time></a> </div><!-- .comment-metadata --> 2260 2261 </footer><!-- .comment-meta --> 2262 2263 <div class="comment-content"> 2264 <p>Great resource, thank you for doing this.</p> 2265 </div><!-- .comment-content --> 2266 2267 </article><!-- .comment-body --> 2268 <ol class="children"> 2269 <li id="comment-100538" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2270 <article id="div-comment-100538" class="comment-body"> 2271 <footer class="comment-meta"> 2272 <div class="comment-author vcard"> 2273 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2274 2275 <div class="comment-metadata"> 2276 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-100538"><time datetime="2019-08-30T14:30:01-04:00">August 30, 2019 at 2:30 pm</time></a> </div><!-- .comment-metadata --> 2277 2278 </footer><!-- .comment-meta --> 2279 2280 <div class="comment-content"> 2281 <p>Thanks, John!</p> 2282 </div><!-- .comment-content --> 2283 2284 </article><!-- .comment-body --> 2285 </li><!-- #comment-## --> 2286</ol><!-- .children --> 2287</li><!-- #comment-## --> 2288 <li id="comment-100546" class="comment even thread-even depth-1"> 2289 <article id="div-comment-100546" class="comment-body"> 2290 <footer class="comment-meta"> 2291 <div class="comment-author vcard"> 2292 <img alt='' src='https://secure.gravatar.com/avatar/98540a5c15d991ce2e1069952df833f88e7a20651ac453ff8ba092822a0eb1a2?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/98540a5c15d991ce2e1069952df833f88e7a20651ac453ff8ba092822a0eb1a2?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://www.tutlane.com" class="url" rel="ugc external nofollow">Ajay</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2293 2294 <div class="comment-metadata"> 2295 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-100546"><time datetime="2019-08-30T20:55:33-04:00">August 30, 2019 at 8:55 pm</time></a> </div><!-- .comment-metadata --> 2296 2297 </footer><!-- .comment-meta --> 2298 2299 <div class="comment-content"> 2300 <p>Good one Ben. Thanks for the article.</p> 2301 </div><!-- .comment-content --> 2302 2303 </article><!-- .comment-body --> 2304 </li><!-- #comment-## --> 2305 <li id="comment-100618" class="pingback odd alt thread-odd thread-alt depth-1"> 2306 <div class="comment-body"> 2307 Pingback: <a href="https://www.benlcollins.com/spreadsheets/google-sheets-macros/" class="url" rel="ugc">Google Sheets Macros: Add automation to your Sheets without any code</a> </div> 2308 </li><!-- #comment-## --> 2309 <li id="comment-101004" class="comment even thread-even depth-1"> 2310 <article id="div-comment-101004" class="comment-body"> 2311 <footer class="comment-meta"> 2312 <div class="comment-author vcard"> 2313 <img alt='' src='https://secure.gravatar.com/avatar/e657aa0ac84ea927950654a7d404d00054e84327600f6ec35b70e1ff34f1c703?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e657aa0ac84ea927950654a7d404d00054e84327600f6ec35b70e1ff34f1c703?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Attila</b> <span class="says">says:</span> </div><!-- .comment-author --> 2314 2315 <div class="comment-metadata"> 2316 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-101004"><time datetime="2019-09-03T05:16:51-04:00">September 3, 2019 at 5:16 am</time></a> </div><!-- .comment-metadata --> 2317 2318 </footer><!-- .comment-meta --> 2319 2320 <div class="comment-content"> 2321 <p>Hi!</p> 2322<p>How do I create a button that I click on will save it to a specific location and give it a name and date Thank y
2322ou!</p> 2323 </div><!-- .comment-content --> 2324 2325 </article><!-- .comment-body --> 2326 </li><!-- #comment-## --> 2327 <li id="comment-101977" class="comment odd alt thread-odd thread-alt depth-1"> 2328 <article id="div-comment-101977" class="comment-body"> 2329 <footer class="comment-meta"> 2330 <div class="comment-author vcard"> 2331 <img alt='' src='https://secure.gravatar.com/avatar/23ba556cd7c6d1141fd1ac6138dca0c99f64cd2d9b4119eb6ab5d9c28d54294d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/23ba556cd7c6d1141fd1ac6138dca0c99f64cd2d9b4119eb6ab5d9c28d54294d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sagan Siniard</b> <span class="says">says:</span> </div><!-- .comment-author --> 2332 2333 <div class="comment-metadata"> 2334 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-101977"><time datetime="2019-09-11T11:46:36-04:00">September 11, 2019 at 11:46 am</time></a> </div><!-- .comment-metadata --> 2335 2336 </footer><!-- .comment-meta --> 2337 2338 <div class="comment-content"> 2339 <p>Hey, I’m trying to design a script for when you present the slideshow, it changes a cursor to a specific picture you want with a hotspot (the pixel where the cursor clicks).</p> 2340<p>Any clue on how to do this?</p> 2341 </div><!-- .comment-content --> 2342 2343 </article><!-- .comment-body --> 2344 </li><!-- #comment-## --> 2345 <li id="comment-102113" class="comment even thread-even depth-1"> 2346 <article id="div-comment-102113" class="comment-body"> 2347 <footer class="comment-meta"> 2348 <div class="comment-author vcard"> 2349 <img alt='' src='https://secure.gravatar.com/avatar/fa794ae2d3727d3c746977a23b4c8f4670cec6cd8014134eac638fbf07d05bb6?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/fa794ae2d3727d3c746977a23b4c8f4670cec6cd8014134eac638fbf07d05bb6?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Infiniti</b> <span class="says">says:</span> </div><!-- .comment-author --> 2350 2351 <div class="comment-metadata"> 2352 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-102113"><time datetime="2019-09-13T02:58:21-04:00">September 13, 2019 at 2:58 am</time></a> </div><!-- .comment-metadata --> 2353 2354 </footer><!-- .comment-meta --> 2355 2356 <div class="comment-content"> 2357 <p>Hi Ben,</p> 2358<p>Do you have a tutorial or the codes for the first Real World sheet/web-app example which you mentioned above?</p> 2359 </div><!-- .comment-content --> 2360 2361 </article><!-- .comment-body --> 2362 </li><!-- #comment-## --> 2363 <li id="comment-102886" class="pingback odd alt thread-odd thread-alt depth-1"> 2364 <div class="comment-body"> 2365 Pingback: <a href="https://www.benlcollins.com/spreadsheets/strava-api-with-google-sheets/" class="url" rel="ugc">How to connect the Strava API with Google Sheets and Data Studio</a> </div> 2366 </li><!-- #comment-## --> 2367 <li id="comment-105935" class="comment even thread-even depth-1"> 2368 <article id="div-comment-105935" class="comment-body"> 2369 <footer class="comment-meta"> 2370 <div class="comment-author vcard"> 2371 <img alt='' src='https://secure.gravatar.com/avatar/75b958db859d2d812a829e7cf95d5225ed1b52f1542881a2fd445317d22b51a9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/75b958db859d2d812a829e7cf95d5225ed1b52f1542881a2fd445317d22b51a9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Jet</b> <span class="says">says:</span> </div><!-- .comment-author --> 2372 2373 <div class="comment-metadata"> 2374 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-105935"><time datetime="2019-10-17T23:29:46-04:00">October 17, 2019 at 11:29 pm</time></a> </div><!-- .comment-metadata --> 2375 2376 </footer><!-- .comment-meta --> 2377 2378 <div class="comment-content"> 2379 <p>Thank You Ben! Content that is easily digestible for beginners!</p> 2380 </div><!-- .comment-content --> 2381 2382 </article><!-- .comment-body --> 2383 </li><!-- #comment-## -->
2384 <li id="comment-107818" class="comment odd alt thread-odd thread-alt depth-1"> 2385 <article id="div-comment-107818" class="comment-body"> 2386 <footer class="comment-meta"> 2387 <div class="comment-author vcard"> 2388 <img alt='' src='https://secure.gravatar.com/avatar/bf627374d7ba88242dafb617bc70d22de1d48010711336d89ebe3093b385955f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/bf627374d7ba88242dafb617bc70d22de1d48010711336d89ebe3093b385955f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://iongore.pro" class="url" rel="ugc external nofollow">iongorepro</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2389 2390 <div class="comment-metadata"> 2391 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-107818"><time datetime="2019-10-31T18:13:50-04:00">October 31, 2019 at 6:13 pm</time></a> </div><!-- .comment-metadata --> 2392 2393 </footer><!-- .comment-meta --> 2394 2395 <div class="comment-content"> 2396 <p>When we open the Script Editor from within a Google document for the first time, it automatically creates a new âUntitled projectâ for us. Letâs change that to something a bit more descriptive, like âCreate Headers.</p> 2397 </div><!-- .comment-content --> 2398 2399 </article><!-- .comment-body --> 2400 </li><!-- #comment-## --> 2401 <li id="comment-111727" class="comment even thread-even depth-1"> 2402 <article id="div-comment-111727" class="comment-body"> 2403 <footer class="comment-meta"> 2404 <div class="comment-author vcard"> 2405 <img alt='' src='https://secure.gravatar.com/avatar/6c728f7eaacf2b2854e94c4204e46986858dfb9d248a833e9aa8327b58186f40?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/6c728f7eaacf2b2854e94c4204e46986858dfb9d248a833e9aa8327b58186f40?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Numan Zahid</b> <span class="says">says:</span> </div><!-- .comment-author --> 2406 2407 <div class="comment-metadata"> 2408 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-111727"><time datetime="2019-11-30T08:14:47-05:00">November 30, 2019 at 8:14 am</time></a> </div><!-- .comment-metadata --> 2409 2410 </footer><!-- .comment-meta --> 2411 2412 <div class="comment-content"> 2413 <p>I have a question !</p> 2414<p>If I am using Map Service within GoogleSheet using Script Editor for calculating Distance b/w two locations , am I gonna pay for it to google or its free ?</p> 2415 </div><!-- .comment-content --> 2416 2417 </article><!-- .comment-body --> 2418 </li><!-- #comment-## --> 2419 <li id="comment-113591" class="comment odd alt thread-odd thread-alt depth-1"> 2420 <article id="div-comment-113591" class="comment-body"> 2421 <footer class="comment-meta"> 2422 <div class="comment-author vcard"> 2423 <img alt='' src='https://secure.gravatar.com/avatar/c421dc1f6cc09ddef3b27cfd1ac68c61acb7f5a7357732574db0038ea86ba504?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/c421dc1f6cc09ddef3b27cfd1ac68c61acb7f5a7357732574db0038ea86ba504?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ray</b> <span class="says">says:</span> </div><!-- .comment-author --> 2424 2425 <div class="comment-metadata"> 2426 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-113591"><time datetime="2019-12-14T15:05:51-05:00">December 14, 2019 at 3:05 pm</time></a> </div><!-- .comment-metadata --> 2427 2428 </footer><!-- .comment-meta --> 2429 2430 <div class="comment-content"> 2431 <p>I can’t even get “Hello World” to print… it just says “Running Function myfunction… Cancel Dismiss” and never progresses beyond that. I did authorize it as described in the article… it seems so simple yet I can’t even get this simple function to work. Any ideas?</p> 2432 </div><!-- .comment-content --> 2433 2434 </article><!-- .comment-body --> 2435 </li><!-- #comment-## -->
2436 <li id="comment-116434" class="pingback even thread-even depth-1"> 2437 <div class="comment-body"> 2438 Pingback: <a href="https://www.benlcollins.com/spreadsheets/google-sheets-sort-by-color-or-filter-by-color/" class="url" rel="ugc">Google Sheets Sort By Color And Google Sheets Filter By Color, With Apps Script</a> </div> 2439 </li><!-- #comment-## --> 2440 <li id="comment-119352" class="comment odd alt thread-odd thread-alt depth-1"> 2441 <article id="div-comment-119352" class="comment-body"> 2442 <footer class="comment-meta"> 2443 <div class="comment-author vcard"> 2444 <img alt='' src='https://secure.gravatar.com/avatar/34a191c8ba9a1ff2c97805ac00c7172ddddf3abb923d2c6f008245bb123999c5?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/34a191c8ba9a1ff2c97805ac00c7172ddddf3abb923d2c6f008245bb123999c5?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">ddddd</b> <span class="says">says:</span> </div><!-- .comment-author --> 2445 2446 <div class="comment-metadata"> 2447 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-119352"><time datetime="2020-01-29T23:17:06-05:00">January 29, 2020 at 11:17 pm</time></a> </div><!-- .comment-metadata --> 2448 2449 </footer><!-- .comment-meta --> 2450 2451 <div class="comment-content"> 2452 <p>if column E has “get fish” then the email should send, – is this part correct? : –</p> 2453<p> if (monthSales = “get fish”){</p> 2454<p>the full code is below: – </p> 2455<p>function CheckSales() {<br /> 2456 // Fetch the monthly sales<br /> 2457 var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“myfish”).getRange(“E1:E1000”);<br /> 2458 var monthSales = monthSalesRange.getValue();<br /> 2459 // Check totals sales<br /> 2460 if (monthSales = “get fish”){<br /> 2461 // Fetch the email address<br /> 2462 var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“Sheet1”).getRange(“B2”);<br /> 2463 var emailAddress = emailRange.getValues();</p> 2464<p> // Send Alert Email.<br /> 2465 var message = ‘Get Fish ‘<br /> 2466 var subject = ‘Get Fish’;<br /> 2467 MailApp.sendEmail(emailAddress, subject, message);<br /> 2468 }<br /> 2469}</p> 2470 </div><!-- .comment-content --> 2471 2472 </article><!-- .comment-body --> 2473 </li><!-- #comment-## --> 2474 <li id="comment-124731" class="comment even thread-even depth-1"> 2475 <article id="div-comment-124731" class="comment-body"> 2476 <footer class="comment-meta"> 2477 <div class="comment-author vcard"> 2478 <img alt='' src='https://secure.gravatar.com/avatar/4463fadd5bd508cbd61b0fc3eb6d6f384ca36fdc474e49d1468494a2038fa860?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4463fadd5bd508cbd61b0fc3eb6d6f384ca36fdc474e49d1468494a2038fa860?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sherri Watkins</b> <span class="says">says:</span> </div><!-- .comment-author --> 2479 2480 <div class="comment-metadata"> 2481 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-124731"><time datetime="2020-03-02T08:36:38-05:00">March 2, 2020 at 8:36 am</time></a> </div><!-- .comment-metadata --> 2482 2483 </footer><!-- .comment-meta --> 2484 2485 <div class="comment-content"> 2486 <p>Great guide!! </p> 2487<p>I do have a question… We are currently converting from Microsoft Office to Google Suite. We create a TON of documents and have to share them within our organization and outside the organization. Is there a way, when writing script, to have it not ask for authorization to run the script? We have over 700 people that may use these documents and it would be time consuming to have to do this for each file. Most of our documents have script of some kind. Thank you!</p> 2488 </div><!-- .comment-content --> 2489 2490 </article><!-- .comment-body --> 2491 </li><!-- #comment-## --> 2492 <li id="comment-131762" class="comment odd alt thread-odd thread-alt depth-1"> 2493 <article id="div-comment-131762" class="comment-body"> 2494 <footer class="comment-meta"> 2495 <div class="comment-author vcard"> 2496 <img alt='' src='https://secure.gravatar.com/avatar/d7a8f074e778bf286bb8e4ff354ffbbab84f9314f59dc6a6f1bd408de7b09d9b?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d7a8f074e778bf286bb8e4ff354ffbbab84f9314f59dc6a6f1bd408de7b09d9b?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="http://www.androidcoding.in/" class="url" rel="ugc external nofollow">ramesh</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2497 2498 <div class="comment-metadata"> 2499 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-131762"><time datetime="2020-06-04T09:54:29-04:00">June 4, 2020 at 9:54 am</time></a> </div><!-- .comment-metadata --> 2500 2501 </footer><!-- .comment-meta --> 2502 2503 <div class="comment-content"> 2504 <p>Nice information on app script for beginners</p> 2505 </div><!-- .comment-content --> 2506 2507 </article><!-- .comment-body --> 2508 </li><!-- #comment-## -->
2509 <li id="comment-133813" class="comment even thread-even depth-1 parent"> 2510 <article id="div-comment-133813" class="comment-body"> 2511 <footer class="comment-meta"> 2512 <div class="comment-author vcard"> 2513 <img alt='' src='https://secure.gravatar.com/avatar/4bf512af8402ce73489c93385ee8c2c2f0aa7efa1668b50c53a875b5985aeee5?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4bf512af8402ce73489c93385ee8c2c2f0aa7efa1668b50c53a875b5985aeee5?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Allen</b> <span class="says">says:</span> </div><!-- .comment-author --> 2514 2515 <div class="comment-metadata"> 2516 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-133813"><time datetime="2020-07-10T16:21:13-04:00">July 10, 2020 at 4:21 pm</time></a> </div><!-- .comment-metadata --> 2517 2518 </footer><!-- .comment-meta --> 2519 2520 <div class="comment-content"> 2521 <p>You lost me at step one: How do I get to this? “Then click the menu Tools > ” I’m using Chrome I made a new tab… then?</p> 2522 </div><!-- .comment-content --> 2523 2524 </article><!-- .comment-body --> 2525 <ol class="children"> 2526 <li id="comment-133909" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2527 <article id="div-comment-133909" class="comment-body"> 2528 <footer class="comment-meta"> 2529 <div class="comment-author vcard"> 2530 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2531 2532 <div class="comment-metadata"> 2533 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-133909"><time datetime="2020-07-12T15:32:17-04:00">July 12, 2020 at 3:32 pm</time></a> </div><!-- .comment-metadata --> 2534 2535 </footer><!-- .comment-meta --> 2536 2537 <div class="comment-content"> 2538 <p>Allen – It’s the Tools menu within your Google Sheet. </p> 2539<p>Cheers,<br /> 2540Ben</p> 2541 </div><!-- .comment-content --> 2542 2543 </article><!-- .comment-body --> 2544 </li><!-- #comment-## --> 2545</ol><!-- .children --> 2546</li><!-- #comment-## --> 2547 <li id="comment-138915" class="comment even thread-odd thread-alt depth-1"> 2548 <article id="div-comment-138915" class="comment-body"> 2549 <footer class="comment-meta"> 2550 <div class="comment-author vcard"> 2551 <img alt='' src='https://secure.gravatar.com/avatar/da9eb9a3f48ca46d1105d3e853fd8512146e0b15d9c751c475608f7efe0510ca?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/da9eb9a3f48ca46d1105d3e853fd8512146e0b15d9c751c475608f7efe0510ca?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sofus Axelsen</b> <span class="says">says:</span> </div><!-- .comment-author --> 2552 2553 <div class="comment-metadata"> 2554 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-138915"><time datetime="2020-09-25T04:46:27-04:00">September 25, 2020 at 4:46 am</time></a> </div><!-- .comment-metadata --> 2555 2556 </footer><!-- .comment-meta --> 2557 2558 <div class="comment-content"> 2559 <p>Amazing article to read!<br /> 2560I’m wondering, what are the other functionalities of this Google App Script? Can I build a web-app using GAS? It seems that most people don’t even know if this program exists. Or I’m the only one who should have known this earlier?<br /> 2561Thank you in advance, Ben!<br /> 2562Your website is very beautiful, I like the theme and the style you’re using:)</p> 2563 </div><!-- .comment-content --> 2564 2565 </article><!-- .comment-body --> 2566 </li><!-- #comment-## -->
2567 <li id="comment-139770" class="comment odd alt thread-even depth-1"> 2568 <article id="div-comment-139770" class="comment-body"> 2569 <footer class="comment-meta"> 2570 <div class="comment-author vcard"> 2571 <img alt='' src='https://secure.gravatar.com/avatar/b0abe4d2d2c6eb1d92162db6386eeb61f26449cefdbe21eeb26aaa951d10e62d?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/b0abe4d2d2c6eb1d92162db6386eeb61f26449cefdbe21eeb26aaa951d10e62d?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">zeta</b> <span class="says">says:</span> </div><!-- .comment-author --> 2572 2573 <div class="comment-metadata"> 2574 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-139770"><time datetime="2020-10-09T22:39:36-04:00">October 9, 2020 at 10:39 pm</time></a> </div><!-- .comment-metadata --> 2575 2576 </footer><!-- .comment-meta --> 2577 2578 <div class="comment-content"> 2579 <p>Good stuff</p> 2580 </div><!-- .comment-content --> 2581 2582 </article><!-- .comment-body --> 2583 </li><!-- #comment-## --> 2584 <li id="comment-141226" class="comment even thread-odd thread-alt depth-1"> 2585 <article id="div-comment-141226" class="comment-body"> 2586 <footer class="comment-meta"> 2587 <div class="comment-author vcard"> 2588 <img alt='' src='https://secure.gravatar.com/avatar/24fb05d258e37bdbc395358e74d04fa7569b77208034670ece06da853dee99a9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/24fb05d258e37bdbc395358e74d04fa7569b77208034670ece06da853dee99a9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Duc</b> <span class="says">says:</span> </div><!-- .comment-author --> 2589 2590 <div class="comment-metadata"> 2591 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-141226"><time datetime="2020-11-06T03:03:05-05:00">November 6, 2020 at 3:03 am</time></a> </div><!-- .comment-metadata --> 2592 2593 </footer><!-- .comment-meta --> 2594 2595 <div class="comment-content"> 2596 <p>Hi Ben,</p> 2597<p>I have tried to practise your first example “Hello World” in Google sheet (my browser using is Google Chrome). </p> 2598<p>But when I run the script, it shows the ReferenceError: Browser is not defined (line 2, file “Code”). I also tried with ‘logger.log’ (instead of ‘browser.msg’) but the same error.</p> 2599<p>Could you please let me know how to fix that?</p> 2600<p>Much appreciated.<br /> 2601Duc</p> 2602 </div><!-- .comment-content --> 2603 2604 </article><!-- .comment-body --> 2605 </li><!-- #comment-## --> 2606 <li id="comment-141348" class="comment odd alt thread-even depth-1"> 2607 <article id="div-comment-141348" class="comment-body"> 2608 <footer class="comment-meta"> 2609 <div class="comment-author vcard"> 2610 <img alt='' src='https://secure.gravatar.com/avatar/06b8252381967f274436a570450ecc3a29285f2bcf270b6d2eaa3eccb03e8ea5?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/06b8252381967f274436a570450ecc3a29285f2bcf270b6d2eaa3eccb03e8ea5?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Binu K Mathew</b> <span class="says">says:</span> </div><!-- .comment-author --> 2611 2612 <div class="comment-metadata"> 2613 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-141348"><time datetime="2020-11-08T01:34:29-05:00">November 8, 2020 at 1:34 am</time></a> </div><!-- .comment-metadata --> 2614 2615 </footer><!-- .comment-meta --> 2616 2617 <div class="comment-content"> 2618 <p>Is it the space in the name “My custom menu”</p> 2619 </div><!-- .comment-content --> 2620 2621 </article><!-- .comment-body --> 2622 </li><!-- #comment-## --> 2623 <li id="comment-151995" class="comment even thread-odd thread-alt depth-1"> 2624 <article id="div-comment-151995" class="comment-body"> 2625 <footer class="comment-meta"> 2626 <div class="comment-author vcard"> 2627 <img alt='' src='https://secure.gravatar.com/avatar/e83d33fb499dea28205db8e6c352209e79cd2cea9fe50f8736dbdaac32700ff5?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/e83d33fb499dea28205db8e6c352209e79cd2cea9fe50f8736dbdaac32700ff5?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sagin</b> <span class="says">says:</span> </div><!-- .comment-author --> 2628 2629 <div class="comment-metadata"> 2630 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-151995"><time datetime="2021-03-17T06:26:57-04:00">March 17, 2021 at 6:26 am</time></a> </div><!-- .comment-metadata --> 2631 2632 </footer><!-- .comment-meta --> 2633 2634 <div class="comment-content"> 2635 <p>Nice</p> 2636 </div><!-- .comment-content --> 2637 2638 </article><!-- .comment-body --> 2639 </li><!-- #comment-## -->
2640 <li id="comment-161604" class="comment odd alt thread-even depth-1 parent"> 2641 <article id="div-comment-161604" class="comment-body"> 2642 <footer class="comment-meta"> 2643 <div class="comment-author vcard"> 2644 <img alt='' src='https://secure.gravatar.com/avatar/186dd1a8235ef10c36e53ead9bb23e08b9d9b1be84d148ea2cdc2ccd12cef286?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/186dd1a8235ef10c36e53ead9bb23e08b9d9b1be84d148ea2cdc2ccd12cef286?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://jagconsultingservices.com/" class="url" rel="ugc external nofollow">James waller</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2645 2646 <div class="comment-metadata"> 2647 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-161604"><time datetime="2021-05-12T08:44:05-04:00">May 12, 2021 at 8:44 am</time></a> </div><!-- .comment-metadata --> 2648 2649 </footer><!-- .comment-meta --> 2650 2651 <div class="comment-content"> 2652 <p>This is the best guide on Google Apps Script. After read this article, i can solve my error and run my project on Google Apps Script. I will share this article with my friends. It will be very helpful to all readers. Good job!</p> 2653 </div><!-- .comment-content --> 2654 2655 </article><!-- .comment-body --> 2656 <ol class="children"> 2657 <li id="comment-161699" class="comment byuser comment-author-benlcollins bypostauthor even depth-2"> 2658 <article id="div-comment-161699" class="comment-body"> 2659 <footer class="comment-meta"> 2660 <div class="comment-author vcard"> 2661 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2662 2663 <div class="comment-metadata"> 2664 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-161699"><time datetime="2021-05-12T17:03:41-04:00">May 12, 2021 at 5:03 pm</time></a> </div><!-- .comment-metadata --> 2665 2666 </footer><!-- .comment-meta --> 2667 2668 <div class="comment-content"> 2669 <p>Thanks, James!</p> 2670 </div><!-- .comment-content --> 2671 2672 </article><!-- .comment-body --> 2673 </li><!-- #comment-## --> 2674</ol><!-- .children --> 2675</li><!-- #comment-## --> 2676 <li id="comment-163847" class="comment odd alt thread-odd thread-alt depth-1"> 2677 <article id="div-comment-163847" class="comment-body"> 2678 <footer class="comment-meta"> 2679 <div class="comment-author vcard"> 2680 <img alt='' src='https://secure.gravatar.com/avatar/950399050316a8449b3be1f4cd52e9fb19f85a94e7549d14f5e6d1c0cd860864?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/950399050316a8449b3be1f4cd52e9fb19f85a94e7549d14f5e6d1c0cd860864?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Gilbert</b> <span class="says">says:</span> </div><!-- .comment-author --> 2681 2682 <div class="comment-metadata"> 2683 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-163847"><time datetime="2021-05-31T11:07:27-04:00">May 31, 2021 at 11:07 am</time></a> </div><!-- .comment-metadata --> 2684 2685 </footer><!-- .comment-meta --> 2686 2687 <div class="comment-content"> 2688 <p>Hey Ben! </p> 2689<p>I am enrolled in two of your great courses and I have been learning a lot! I am a beginning into Apps Scripts and I have a question in a problem where I am stuck. </p> 2690<p>What I am doing with the code below is copying and paste the formula from one cell to the next cell to the right. I am repeating this process in 30 rows. However, I need to tell the code to skip copying and pasting the formula
2690if the row is filtered or hidden and I am unable to make it work.</p> 2691<p>function fillFormulaDown() {<br /> 2692 const sheet = SpreadsheetApp.getActiveSheet();<br /> 2693 let currentCell = sheet.getActiveCell();<br /> 2694 if(currentCell.isRowHiddenByFilter != true){<br /> 2695 while (currentCell.getValue()) {<br /> 2696 let formula = currentCell.getFormulaR1C1();<br /> 2697 if (formula) {<br /> 2698 currentCell.offset(0, 1).setFormulaR1C1(formula);<br /> 2699 }<br /> 2700 currentCell = currentCell.offset(1, 0);<br /> 2701 }<br /> 2702}<br /> 2703}</p> 2704<p>any inputs would be appreciated.</p> 2705 </div><!-- .comment-content --> 2706 2707 </article><!-- .comment-body --> 2708 </li><!-- #comment-## --> 2709 <li id="comment-164373" class="comment even thread-even depth-1"> 2710 <article id="div-comment-164373" class="comment-body"> 2711 <footer class="comment-meta"> 2712 <div class="comment-author vcard"> 2713 <img alt='' src='https://secure.gravatar.com/avatar/3e05a9fcbeefc94def2d5d8c46d8468bd59fa0ccf8e0ba1ec8a0b131968d8681?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/3e05a9fcbeefc94def2d5d8c46d8468bd59fa0ccf8e0ba1ec8a0b131968d8681?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">ankita</b> <span class="says">says:</span> </div><!-- .comment-author --> 2714 2715 <div class="comment-metadata"> 2716 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-164373"><time datetime="2021-06-07T01:48:43-04:00">June 7, 2021 at 1:48 am</time></a> </div><!-- .comment-metadata --> 2717 2718 </footer><!-- .comment-meta --> 2719 2720 <div class="comment-content"> 2721 <p>Hi<br /> 2722I want to link 3 different row status with a fourth one which is the master status for all the 3 status. I have used this following code but it’s only linking with one row and not with the other 2<br /> 2723=ifs(D3=”YTS”,”Wireframe YTS”,D3=”WIP”,”Wireframe WIP”,D3=”RTK”,”Wireframe RTK”,D3=”Review”,”Wireframe Review”,D3=”Correction”,”Wireframe Correction”,D3=”Closed”,”Wireframe Closed”,H3=”YTS”,”Storyboard YTS”,H3=”WIP”,”Storyboard WIP”,H3=”RTK”,”Storyboard RTK”,H3=”Review”,”Storyboard Review”,H3=”Correction”,”Storyboard Correction”,H3=”Closed”,”Storyboard Closed”,L3=”YTS”,”FCD YTS”,L3=”WIP”,”FCD WIP”,L3=”RTK”,”FCD RTK”,L3=”Review”,”FCD Review”,L3=”Correction”,”FCD Correction”,L3=”Closed”,”FCD Closed”)</p> 2724 </div><!-- .comment-content --> 2725 2726 </article><!-- .comment-body --> 2727 </li><!-- #comment-## --> 2728 <li id="comment-164394" class="comment odd alt thread-odd thread-alt depth-1"> 2729 <article id="div-comment-164394" class="comment-body"> 2730 <footer class="comment-meta"> 2731 <div class="comment-author vcard"> 2732 <img alt='' src='https://secure.gravatar.com/avatar/02dca1261145f233e2a0999ca6fe63a04013bf74b3632107b2031d5eb01b57a8?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/02dca1261145f233e2a0999ca6fe63a04013bf74b3632107b2031d5eb01b57a8?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sonu Raj</b> <span class="says">says:</span> </div><!-- .comment-author --> 2733 2734 <div class="comment-metadata"> 2735 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-164394"><time datetime="2021-06-07T14:38:46-04:00">June 7, 2021 at 2:38 pm</time></a> </div><!-- .comment-metadata --> 2736 2737 </footer><!-- .comment-meta --> 2738 2739 <div class="comment-content"> 2740 <p>Excellent !! Easy to understand … Thank you so much !!</p> 2741 </div><!-- .comment-content --> 2742 2743 </article><!-- .comment-body --> 2744 </li><!-- #comment-## -->
2745 <li id="comment-173143" class="comment even thread-even depth-1"> 2746 <article id="div-comment-173143" class="comment-body"> 2747 <footer class="comment-meta"> 2748 <div class="comment-author vcard"> 2749 <img alt='' src='https://secure.gravatar.com/avatar/c0ea2c768bbc9a71747b6e6fdb2471208ca91e461cca6012941e0819912dbd0f?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/c0ea2c768bbc9a71747b6e6fdb2471208ca91e461cca6012941e0819912dbd0f?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Kanhaiya</b> <span class="says">says:</span> </div><!-- .comment-author --> 2750 2751 <div class="comment-metadata"> 2752 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-173143"><time datetime="2021-08-19T01:36:19-04:00">August 19, 2021 at 1:36 am</time></a> </div><!-- .comment-metadata --> 2753 2754 </footer><!-- .comment-meta --> 2755 2756 <div class="comment-content"> 2757 <p>Hi Ben,<br /> 2758You are awesome. I have a question to you. I have created a script to get all filename and URL using DriveApp and put the same in spreadsheet but after 1800 seconds (30 minutes) script has stopped its execution with timeout error. </p> 2759<p>How to handle this if script will take more time in execution what to do to get the required results ?</p> 2760<p>Pls help</p> 2761<p>Thanks in advance</p> 2762 </div><!-- .comment-content --> 2763 2764 </article><!-- .comment-body --> 2765 </li><!-- #comment-## --> 2766 <li id="comment-180826" class="comment odd alt thread-odd thread-alt depth-1"> 2767 <article id="div-comment-180826" class="comment-body"> 2768 <footer class="comment-meta"> 2769 <div class="comment-author vcard"> 2770 <img alt='' src='https://secure.gravatar.com/avatar/6b831aef87fe795b6569f563a93d46818fd9e96fe7d492e104e2496a5472dea3?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/6b831aef87fe795b6569f563a93d46818fd9e96fe7d492e104e2496a5472dea3?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Fathma Siddique</b> <span class="says">says:</span> </div><!-- .comment-author --> 2771 2772 <div class="comment-metadata"> 2773 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-180826"><time datetime="2021-10-25T14:00:11-04:00">October 25, 2021 at 2:00 pm</time></a> </div><!-- .comment-metadata --> 2774 2775 </footer><!-- .comment-meta --> 2776 2777 <div class="comment-content"> 2778 <p>Is there any way I can hide top bar default options like file, help etc?</p> 2779 </div><!-- .comment-content --> 2780 2781 </article><!-- .comment-body --> 2782 </li><!-- #comment-## --> 2783 <li id="comment-197282" class="comment even thread-even depth-1 parent"> 2784 <article id="div-comment-197282" class="comment-body"> 2785 <footer class="comment-meta"> 2786 <div class="comment-author vcard"> 2787 <img alt='' src='https://secure.gravatar.com/avatar/cf836914a45799fa7a5ec00ba9f605c408f84ccad6fd6dcf01a4797ac654a0c5?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/cf836914a45799fa7a5ec00ba9f605c408f84ccad6fd6dcf01a4797ac654a0c5?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Mark</b> <span class="says">says:</span> </div><!-- .comment-author --> 2788 2789 <div class="comment-metadata"> 2790 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-197282"><time datetime="2022-02-05T16:40:11-05:00">February 5, 2022 at 4:40 pm</time></a> </div><!-- .comment-metadata --> 2791 2792 </footer><!-- .comment-meta --> 2793 2794 <div class="comment-content"> 2795 <p>You are a life Saver, Ben. Just weeks ago, I discovered the awesome potential of Google AppScript, and just now I’m on the lookout on how to learn the code, and by far this is the best intro out there. I am specially fond of your mention of Google Docs, because now I have new things to try there. </p> 2796<p>Thank you so much, Ben.</p> 2797 </div><!-- .comment-content --> 2798 2799 </article><!-- .comment-body --> 2800 <ol class="children">
2801 <li id="comment-197334" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2802 <article id="div-comment-197334" class="comment-body"> 2803 <footer class="comment-meta"> 2804 <div class="comment-author vcard"> 2805 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2806 2807 <div class="comment-metadata"> 2808 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-197334"><time datetime="2022-02-06T15:08:54-05:00">February 6, 2022 at 3:08 pm</time></a> </div><!-- .comment-metadata --> 2809 2810 </footer><!-- .comment-meta --> 2811 2812 <div class="comment-content"> 2813 <p>You’re welcome! Good luck with your coding journey, Mark!</p> 2814<p>After this article, check out my free Apps Script course: <a href="https://courses.benlcollins.com/p/apps-script-blastoff" target="_blank" rel="noopener nofollow ugc">Intro to Apps Script</a></p> 2815 </div><!-- .comment-content --> 2816 2817 </article><!-- .comment-body --> 2818 </li><!-- #comment-## --> 2819</ol><!-- .children --> 2820</li><!-- #comment-## --> 2821 <li id="comment-200201" class="comment even thread-odd thread-alt depth-1 parent"> 2822 <article id="div-comment-200201" class="comment-body"> 2823 <footer class="comment-meta"> 2824 <div class="comment-author vcard"> 2825 <img alt='' src='https://secure.gravatar.com/avatar/1332ea957df5e07167d8ddbaf28d44d205e27c3e836395e2ece040fbd6407f00?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/1332ea957df5e07167d8ddbaf28d44d205e27c3e836395e2ece040fbd6407f00?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Hilton Fernandes</b> <span class="says">says:</span> </div><!-- .comment-author --> 2826 2827 <div class="comment-metadata"> 2828 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-200201"><time datetime="2022-03-02T08:51:22-05:00">March 2, 2022 at 8:51 am</time></a> </div><!-- .comment-metadata --> 2829 2830 </footer><!-- .comment-meta --> 2831 2832 <div class="comment-content"> 2833 <p>Congratulations, Ben !</p> 2834<p>Great materials as your are rarely seen on the Web.</p> 2835 </div><!-- .comment-content --> 2836 2837 </article><!-- .comment-body --> 2838 <ol class="children"> 2839 <li id="comment-200215" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2840 <article id="div-comment-200215" class="comment-body"> 2841 <footer class="comment-meta"> 2842 <div class="comment-author vcard"> 2843 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2844 2845 <div class="comment-metadata"> 2846 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-200215"><time datetime="2022-03-02T09:39:00-05:00">March 2, 2022 at 9:39 am</time></a> </div><!-- .comment-metadata --> 2847 2848 </footer><!-- .comment-meta --> 2849 2850 <div class="comment-content"> 2851 <p>Thanks, Hilton!</p> 2852 </div><!-- .comment-content --> 2853 2854 </article><!-- .comment-body --> 2855 </li><!-- #comment-## --> 2856</ol><!-- .children --> 2857</li><!-- #comment-## --> 2858 <li id="comment-200354" class="comment even thread-even depth-1 parent"> 2859 <article id="div-comment-200354" class="comment-body"> 2860 <footer class="comment-meta"> 2861 <div class="comment-author vcard"> 2862 <img alt='' src='https://secure.gravatar.com/avatar/4419edee5b03c16a339ef2d490fb75fc9e04de8e86d7a70d3bbbff9347a3b01e?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/4419edee5b03c16a339ef2d490fb75fc9e04de8e86d7a70d3bbbff9347a3b01e?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Raphael</b> <span class="says">says:</span> </div><!-- .comment-author --> 2863 2864 <div class="comment-metadata"> 2865 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-200354"><time datetime="2022-03-03T06:59:23-05:00">March 3, 2022 at 6:59 am</time></a> </div><!-- .comment-metadata --> 2866 2867 </footer><!-- .comment-meta --> 2868 2869 <div class="comment-content"> 2870 <p>This looks great! I want to start making a container-bound script inside a sheet, but I cant’t find the “script editor” in the “tools”
2870 menu… Am I missing something? Probably a very noobish beginners question: ð</p> 2871 </div><!-- .comment-content --> 2872 2873 </article><!-- .comment-body --> 2874 <ol class="children"> 2875 <li id="comment-200368" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2876 <article id="div-comment-200368" class="comment-body"> 2877 <footer class="comment-meta"> 2878 <div class="comment-author vcard"> 2879 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2880 2881 <div class="comment-metadata"> 2882 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-200368"><time datetime="2022-03-03T08:38:58-05:00">March 3, 2022 at 8:38 am</time></a> </div><!-- .comment-metadata --> 2883 2884 </footer><!-- .comment-meta --> 2885 2886 <div class="comment-content"> 2887 <p>Hi Raphael,</p> 2888<p>It’s moved to the Extensions menu now! Sorry about that. They changed it a couple of months ago and this article needs to be updated. Doing that next!</p> 2889<p>Cheers,<br /> 2890Ben</p> 2891 </div><!-- .comment-content --> 2892 2893 </article><!-- .comment-body --> 2894 </li><!-- #comment-## --> 2895</ol><!-- .children --> 2896</li><!-- #comment-## --> 2897 <li id="comment-203706" class="comment even thread-odd thread-alt depth-1 parent"> 2898 <article id="div-comment-203706" class="comment-body"> 2899 <footer class="comment-meta"> 2900 <div class="comment-author vcard"> 2901 <img alt='' src='https://secure.gravatar.com/avatar/457954b0e87cfe4bed5c2c804c550ed9c3cad3e705c3b07712f72bed3cc92abd?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/457954b0e87cfe4bed5c2c804c550ed9c3cad3e705c3b07712f72bed3cc92abd?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Tara Benavides</b> <span class="says">says:</span> </div><!-- .comment-author --> 2902 2903 <div class="comment-metadata"> 2904 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-203706"><time datetime="2022-03-29T13:26:25-04:00">March 29, 2022 at 1:26 pm</time></a> </div><!-- .comment-metadata --> 2905 2906 </footer><!-- .comment-meta --> 2907 2908 <div class="comment-content"> 2909 <p>Hi, I can get to AppsScript under extensions and open the editor there, but in Google Sheets, under “Tools” there is no “Script Editor” option. Is there something I have to install first? </p> 2910<p>I read that if you are using an organizations Google Suite, it has the ability to disable the “Script Editor” function, but I don’t know if that applies. I am using a company computer/browser, but the actual Google account is my own. Any idea what is going on?</p> 2911 </div><!-- .comment-content --> 2912 2913 </article><!-- .comment-body --> 2914 <ol class="children"> 2915 <li id="comment-203708" class="comment byuser comment-author-benlcollins bypostauthor odd alt depth-2"> 2916 <article id="div-comment-203708" class="comment-body"> 2917 <footer class="comment-meta"> 2918 <div class="comment-author vcard"> 2919 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 2920 2921 <div class="comment-metadata"> 2922 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-203708"><time datetime="2022-03-29T13:38:52-04:00">March 29, 2022 at 1:38 pm</time></a> </div><!-- .comment-metadata --> 2923 2924 </footer><!-- .comment-meta --> 2925 2926 <div class="comment-content"> 2927 <p>Hi Tara,</p> 2928<p>No, you’ve found it. They recently moved the Apps Script menu location from Tools to Extensions. Unfortunately, some of my posts are now out-of-date. I will update this one now.</p> 2929<p>Cheers,<br /> 2930Ben</p> 2931 </div><!-- .comment-content --> 2932 2933 </article><!-- .comment-body --> 2934 </li><!-- #comment-## --> 2935</ol><!-- .children --> 2936</li><!-- #comment-## -->
2937 <li id="comment-204253" class="comment even thread-even depth-1"> 2938 <article id="div-comment-204253" class="comment-body"> 2939 <footer class="comment-meta"> 2940 <div class="comment-author vcard"> 2941 <img alt='' src='https://secure.gravatar.com/avatar/97b043a266bf683a04340df0348d395c73a21ab376129d17008cc7440ec1ff83?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/97b043a266bf683a04340df0348d395c73a21ab376129d17008cc7440ec1ff83?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://www.youtube.com/watch?v=MKRHWT6xdEU" class="url" rel="ugc external nofollow">Phil</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 2942 2943 <div class="comment-metadata"> 2944 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-204253"><time datetime="2022-04-03T13:36:14-04:00">April 3, 2022 at 1:36 pm</time></a> </div><!-- .comment-metadata --> 2945 2946 </footer><!-- .comment-meta --> 2947 2948 <div class="comment-content"> 2949 <p>I get script funcion not found on my Adding a custom menu in Google Apps Script attempt. Checkit over and over – any clues?</p> 2950 </div><!-- .comment-content --> 2951 2952 </article><!-- .comment-body --> 2953 </li><!-- #comment-## --> 2954 <li id="comment-206020" class="comment odd alt thread-odd thread-alt depth-1"> 2955 <article id="div-comment-206020" class="comment-body"> 2956 <footer class="comment-meta"> 2957 <div class="comment-author vcard"> 2958 <img alt='' src='https://secure.gravatar.com/avatar/6dcbaad1e31b4df4774ac4062de434e6119d1deaee2bdd00095b0f87c96e1e9e?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/6dcbaad1e31b4df4774ac4062de434e6119d1deaee2bdd00095b0f87c96e1e9e?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ranjeet Kumar</b> <span class="says">says:</span> </div><!-- .comment-author --> 2959 2960 <div class="comment-metadata"> 2961 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-206020"><time datetime="2022-04-20T12:37:28-04:00">April 20, 2022 at 12:37 pm</time></a> </div><!-- .comment-metadata --> 2962 2963 </footer><!-- .comment-meta --> 2964 2965 <div class="comment-content"> 2966 <p>I just started the app script in google excel. But when I am trying to update the existing value then it is not updating. My code is :<br /> 2967function updateData() {</p> 2968<p> var SPREADSHEET_NAME = “Data”;<br /> 2969 var SEARCH_COL_IDX = 0;<br /> 2970 var RETURN_COL_IDX = 0;</p> 2971<p> var ss = SpreadsheetApp.getActiveSpreadsheet();<br /> 2972 var formSS = ss.getSheetByName(“Form”); //Form Sheet<br /> 2973 var datasheet = ss.getSheetByName(“Data”); //Data Sheet</p> 2974<p> var str = formSS.getRange(“B5”).getValue();<br /> 2975 var values = ss.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();<br /> 2976 for (var i = 0; i < values.length; i++) {<br /> 2977 var row = values[i];<br /> 2978 if (row[SEARCH_COL_IDX] == str) {<br /> 2979 var INT_R = i+1</p> 2980<p> var values1 = [[formSS.getRange("B5").setValue(row[0]),<br /> 2981 formSS.getRange("B7").setValue(row[1]) ,<br /> 2982 formSS.getRange("E5").setValue(row[2]) ,<br /> 2983 formSS.getRange("E7").setValue(row[3]) ,<br /> 2984 formSS.getRange("H5").setValue(row[4]) ,<br /> 2985 formSS.getRange("H7").setValue(row[5]) ,<br /> 2986 formSS.getRange("B9").setValue(row[6]),<br /> 2987 formSS.getRange("E9").setValue(row[7]) ,<br /> 2988 formSS.getRange("H9").setValue(row[8]) ,<br /> 2989 formSS.getRange("H11").setValue(row[9]) ,<br /> 2990 formSS.getRange("H13").setValue(row[10]),<br /> 2991 formSS.getRange("B11").setValue(row[11]),<br /> 2992 formSS.getRange("D11").setValue(row[12]),<br /> 2993 formSS.getRange("B12").setValue(row[13]),<br /> 2994 formSS.getRange("D12").setValue(row[14]),<br /> 2995 formSS.getRange("B13").setValue(row[15]),<br /> 2996 formSS.getRange("D13").setValue(row[16]),<br /> 2997 formSS.getRange("B14").setValue(row[17]),<br /> 2998 formSS.getRange("D14").setValue(row[18]),<br /> 2999 formSS.getRange("B15").setValue(row[19]) ,<br /> 3000 formSS.getRange("D15").setValue(row[20]),<br /> 3001 formSS.getRange("B16").setValue(row[21]),<br /> 3002 formSS.getRange("D16").setValue(row[22]) ]];</p> 3003<p> datasheet.getRange(INT_R, 1, 1, 23).setValues(values1);<br /> 3004 SpreadsheetApp.getUi().alert(' "Data Updated "');<br /> 3005 return row[RETURN_COL_IDX];<br /> 3006 }<br /> 3007 }<br /> 3008}</p> 3009<p>It is updating the value as "Range".<br /> 3010Please help to rectify this issue</p> 3011 </div><!-- .comment-content --> 3012 3013 </article><!-- .comment-body --> 3014 </li><!-- #comment-## -->
3015 <li id="comment-206530" class="comment even thread-even depth-1"> 3016 <article id="div-comment-206530" class="comment-body"> 3017 <footer class="comment-meta"> 3018 <div class="comment-author vcard"> 3019 <img alt='' src='https://secure.gravatar.com/avatar/cfe26057864988decabfa5d034dd07c0d6890ddea6c1fcdb5a2acc39c963be30?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/cfe26057864988decabfa5d034dd07c0d6890ddea6c1fcdb5a2acc39c963be30?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Nick Thiele</b> <span class="says">says:</span> </div><!-- .comment-author --> 3020 3021 <div class="comment-metadata"> 3022 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-206530"><time datetime="2022-04-27T17:58:33-04:00">April 27, 2022 at 5:58 pm</time></a> </div><!-- .comment-metadata --> 3023 3024 </footer><!-- .comment-meta --> 3025 3026 <div class="comment-content"> 3027 <p>Do you know if it’s possible to write a Google script where you can upload a CSV file of addresses you’ve SENT to, and then have the script filter that list and give you a new CSV file that only includes the addresses that haven’t replied?</p> 3028 </div><!-- .comment-content --> 3029 3030 </article><!-- .comment-body --> 3031 </li><!-- #comment-## --> 3032 <li id="comment-213899" class="comment odd alt thread-odd thread-alt depth-1"> 3033 <article id="div-comment-213899" class="comment-body"> 3034 <footer class="comment-meta"> 3035 <div class="comment-author vcard"> 3036 <img alt='' src='https://secure.gravatar.com/avatar/7c85292caaf9b658a367d41fa425e33df9301eb5309b59a48216d15d807db1d8?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/7c85292caaf9b658a367d41fa425e33df9301eb5309b59a48216d15d807db1d8?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">parisa</b> <span class="says">says:</span> </div><!-- .comment-author --> 3037 3038 <div class="comment-metadata"> 3039 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-213899"><time datetime="2022-07-11T02:03:16-04:00">July 11, 2022 at 2:03 am</time></a> </div><!-- .comment-metadata --> 3040 3041 </footer><!-- .comment-meta --> 3042 3043 <div class="comment-content"> 3044 <p>Hi,<br /> 3045I need to run 3 scripts for same sheet simultaneously in Google app script. can you please help me?</p> 3046 </div><!-- .comment-content --> 3047 3048 </article><!-- .comment-body --> 3049 </li><!-- #comment-## --> 3050 <li id="comment-217983" class="comment even thread-even depth-1"> 3051 <article id="div-comment-217983" class="comment-body"> 3052 <footer class="comment-meta"> 3053 <div class="comment-author vcard"> 3054 <img alt='' src='https://secure.gravatar.com/avatar/64094a7af6cf603dcb6a28ddc0eb0fd7bb791aaf317e268ba49ec999365eaec9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/64094a7af6cf603dcb6a28ddc0eb0fd7bb791aaf317e268ba49ec999365eaec9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Nolan Gutierrez</b> <span class="says">says:</span> </div><!-- .comment-author --> 3055 3056 <div class="comment-metadata"> 3057 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-217983"><time datetime="2022-09-04T19:52:21-04:00">September 4, 2022 at 7:52 pm</time></a> </div><!-- .comment-metadata --> 3058 3059 </footer><!-- .comment-meta --> 3060 3061 <div class="comment-content"> 3062 <p>This is interesting to me as a small-time researcher. It seems like a tool for hobbyists and people who are interested in improving their productivity, possibly as small business owners, as opposed to being used for deployment. I wonder how many people have actually used google apps scripts. I would be interested in the actual statistics. I just started by creating some simple scripts to organize my debts/credits and to send emails. I think it’s a fun tool to use and I think that it has a very high potential for scripting.</p> 3063 </div><!-- .comment-content --> 3064 3065 </article><!-- .comment-body --> 3066 </li><!-- #comment-## -->
3067 <li id="comment-227926" class="comment odd alt thread-odd thread-alt depth-1"> 3068 <article id="div-comment-227926" class="comment-body"> 3069 <footer class="comment-meta"> 3070 <div class="comment-author vcard"> 3071 <img alt='' src='https://secure.gravatar.com/avatar/62ca1114a8e5d314b29de2150b53b95567a7e8455c970a1c391fe67653e63f1a?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/62ca1114a8e5d314b29de2150b53b95567a7e8455c970a1c391fe67653e63f1a?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Sarah Aziz</b> <span class="says">says:</span> </div><!-- .comment-author --> 3072 3073 <div class="comment-metadata"> 3074 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-227926"><time datetime="2022-12-01T08:03:27-05:00">December 1, 2022 at 8:03 am</time></a> </div><!-- .comment-metadata --> 3075 3076 </footer><!-- .comment-meta --> 3077 3078 <div class="comment-content"> 3079 <p>I need help.<br /> 3080I was handed an app created by app script. Apart from the fact that I don’t understand App script how can I add it online on our domain so that it can be accessed any where.<br /> 3081I want the app to be connected to mysql database, is it possible?</p> 3082 </div><!-- .comment-content --> 3083 3084 </article><!-- .comment-body --> 3085 </li><!-- #comment-## --> 3086 <li id="comment-239547" class="comment even thread-even depth-1"> 3087 <article id="div-comment-239547" class="comment-body"> 3088 <footer class="comment-meta"> 3089 <div class="comment-author vcard"> 3090 <img alt='' src='https://secure.gravatar.com/avatar/fc87b336ca40dbc14d8eeb15679378ef38d553c8728e193e123a2b85b6f41048?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/fc87b336ca40dbc14d8eeb15679378ef38d553c8728e193e123a2b85b6f41048?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Jonah</b> <span class="says">says:</span> </div><!-- .comment-author --> 3091 3092 <div class="comment-metadata"> 3093 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-239547"><time datetime="2023-02-28T02:46:13-05:00">February 28, 2023 at 2:46 am</time></a> </div><!-- .comment-metadata --> 3094 3095 </footer><!-- .comment-meta --> 3096 3097 <div class="comment-content"> 3098 <p>How do I convert a number into text using Apps Script?</p> 3099 </div><!-- .comment-content --> 3100 3101 </article><!-- .comment-body --> 3102 </li><!-- #comment-## --> 3103 <li id="comment-242261" class="comment odd alt thread-odd thread-alt depth-1"> 3104 <article id="div-comment-242261" class="comment-body"> 3105 <footer class="comment-meta"> 3106 <div class="comment-author vcard"> 3107 <img alt='' src='https://secure.gravatar.com/avatar/29f01da5575b540d356c1765fcb64fb348db2de9bd70527f1a2509d682c5c81c?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/29f01da5575b540d356c1765fcb64fb348db2de9bd70527f1a2509d682c5c81c?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://www.seosteph.co.uk" class="url" rel="ugc external nofollow">Steph Andrusjak</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 3108 3109 <div class="comment-metadata"> 3110 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-242261"><time datetime="2023-04-16T12:06:24-04:00">April 16, 2023 at 12:06 pm</time></a> </div><!-- .comment-metadata --> 3111 3112 </footer><!-- .comment-meta --> 3113 3114 <div class="comment-content"> 3115 <p>Apps Script is so powerful. I’ve only dabbled so far and been impressed on how it can help me drill down the data for easier analysis on Google Sheets. Thanks for sharing these posts and guides on your website, Ben, and for your very informative newsletter which I always enjoy reading!</p> 3116 </div><!-- .comment-content --> 3117 3118 </article><!-- .comment-body --> 3119 </li><!-- #comment-## -->
3120 <li id="comment-245922" class="comment even thread-even depth-1"> 3121 <article id="div-comment-245922" class="comment-body"> 3122 <footer class="comment-meta"> 3123 <div class="comment-author vcard"> 3124 <img alt='' src='https://secure.gravatar.com/avatar/d57c26f8a47c21a394d56fa4642b1e9db241d1a28a1abb8d200edb5d8fab2101?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/d57c26f8a47c21a394d56fa4642b1e9db241d1a28a1abb8d200edb5d8fab2101?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Givie Castanares</b> <span class="says">says:</span> </div><!-- .comment-author --> 3125 3126 <div class="comment-metadata"> 3127 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-245922"><time datetime="2023-06-08T08:27:01-04:00">June 8, 2023 at 8:27 am</time></a> </div><!-- .comment-metadata --> 3128 3129 </footer><!-- .comment-meta --> 3130 3131 <div class="comment-content"> 3132 <p>Hi! Sir Ben! I’m such a big fan of all your work. I just want to say thank you for keep sharing your idea to everyone <3<br /> 3133Wish you always in good health (bow)</p> 3134 </div><!-- .comment-content --> 3135 3136 </article><!-- .comment-body --> 3137 </li><!-- #comment-## --> 3138 <li id="comment-265363" class="comment odd alt thread-odd thread-alt depth-1 parent"> 3139 <article id="div-comment-265363" class="comment-body"> 3140 <footer class="comment-meta"> 3141 <div class="comment-author vcard"> 3142 <img alt='' src='https://secure.gravatar.com/avatar/42b4944cb75e0a6450f40ceec0d7384252b17543ccf6d49472834398df989970?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/42b4944cb75e0a6450f40ceec0d7384252b17543ccf6d49472834398df989970?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn"><a href="https://coffeemachine.guru" class="url" rel="ugc external nofollow">Sean Power</a></b> <span class="says">says:</span> </div><!-- .comment-author --> 3143 3144 <div class="comment-metadata"> 3145 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-265363"><time datetime="2024-01-05T00:53:10-05:00">January 5, 2024 at 12:53 am</time></a> </div><!-- .comment-metadata --> 3146 3147 </footer><!-- .comment-meta --> 3148 3149 <div class="comment-content"> 3150 <p>Love your work, this was very easy to follow and a goood taster for what could be learned with some of the courses on offer here. Thanks again, this was great.</p> 3151 </div><!-- .comment-content --> 3152 3153 </article><!-- .comment-body --> 3154 <ol class="children"> 3155 <li id="comment-265414" class="comment byuser comment-author-benlcollins bypostauthor even depth-2"> 3156 <article id="div-comment-265414" class="comment-body"> 3157 <footer class="comment-meta"> 3158 <div class="comment-author vcard"> 3159 <img alt='' src='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=56&d=mm&r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&d=mm&r=g 2x' class='avatar avatar-56 photo' height='56' width='56' loading='lazy' decoding='async'/> <b class="fn">Ben</b> <span class="says">says:</span> </div><!-- .comment-author --> 3160 3161 <div class="comment-metadata"> 3162 <a href="https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/#comment-265414"><time datetime="2024-01-05T12:22:27-05:00">January 5, 2024 at 12:22 pm</time></a> </div><!-- .comment-metadata --> 3163 3164 </footer><!-- .comment-meta --> 3165 3166 <div class="comment-content"> 3167 <p>You’re welcome! Thanks for reading and good luck on your Apps Script journey!</p> 3168 </div><!-- .comment-content --> 3169 3170 </article><!-- .comment-body --> 3171 </li><!-- #comment-## --> 3172</ol><!-- .children --> 3173</li><!-- #comment-## --> 3174 </ol><!-- .comment-list --> 3175 3176 3177 3178 <p class="no-comments">Comments are closed.</p> 3179 3180 3181</div><!-- .comments-area --> 3182 3183 <nav class="navigation post-navigation" aria-label="Posts"> 3184 <h2 class="screen-reader-text">Post navigation</h2> 3185 <div class="nav-links"><div class="nav-previous"><a href="https://www.benlcollins.com/spreadsheets/ifs-function/" rel="prev"><span class="meta-nav" aria-hidden="true">Previous</span> <span class="screen-reader-text">Previous post:</span> <span class="post-title">IFS Function in Google Sheets</span></a></div><div class="nav-next"><a href="https://www.benlcollins.com/tables/google-tables-apps-script-bot/" rel="next"><span class="meta-nav" aria-hidden="true">Next</span> <span class="screen-reader-text">Next post:</span> <span class="post-title">Data Enrichment with the Google Tables Apps Script Bot</span></a></div></div> 3186 </nav> 3187 </main><!-- .site-main --> 3188 </div><!-- .content-area --> 3189 3190 3191 </div><!-- .site-content --> 3192 3193 <footer data-wpr-lazyrender="1" id="colophon" class="site-footer"> 3194 <div class="site-info"> 3195 <a class="privacy-policy-link" href="https://www.benlcollins.com/privacy/" rel="privacy-policy">Privacy Policy</a><span role="separator" aria-hidden="true"></span> <a href="https://wordpress.org/" class="imprint"> 3196 Proudly powered by WordPress </a> 3197 </div><!-- .site-info --> 3198 </footer><!-- .site-footer --> 3199 3200</div><!-- .site --> 3201
3202<script type="speculationrules"> 3203{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/twentyfifteen/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 3204</script>
3204 3205<div class="simple-banner simple-banner-text" style="display:none !important"></div>
3205<script async data-uid="6073b22c96" src="https://benlcollins.kit.com/6073b22c96/index.js" data-kit-limit-per-session="0" data-jetpack-boost="ignore" data-no-defer="1" data-no-optimize="1" nowprocket></script>
vendor: 1 bytes, line 3205
3205
3206<script id="syntaxhighlighter-core-js" src="https://www.benlcollins.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shCore.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 3206
3206
3207<script id="syntaxhighlighter-brush-jscript-js" src="https://www.benlcollins.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/scripts/shBrushJScript.js?ver=3.0.9b"></script>
vendor: 1 bytes, line 3207
3207
3208<script type='text/javascript'> 3209 (function(){ 3210 var corecss = document.createElement('link'); 3211 var themecss = document.createElement('link'); 3212 var corecssurl = "https://www.benlcollins.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shCore.css?ver=3.0.9b"; 3213 if ( corecss.setAttribute ) { 3214 corecss.setAttribute( "rel", "stylesheet" ); 3215 corecss.setAttribute( "type", "text/css" ); 3216 corecss.setAttribute( "href", corecssurl ); 3217 } else { 3218 corecss.rel = "stylesheet"; 3219 corecss.href = corecssurl; 3220 } 3221 document.head.appendChild( corecss ); 3222 var themecssurl = "https://www.benlcollins.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter3/styles/shThemeDefault.css?ver=3.0.9b"; 3223 if ( themecss.setAttribute ) { 3224 themecss.setAttribute( "rel", "stylesheet" ); 3225 themecss.setAttribute( "type", "text/css" ); 3226 themecss.setAttribute( "href", themecssurl ); 3227 } else { 3228 themecss.rel = "stylesheet"; 3229 themecss.href = themecssurl; 3230 } 3231 document.head.appendChild( themecss ); 3232 })(); 3233 SyntaxHighlighter.config.strings.expandSource = '+ expand source'; 3234 SyntaxHighlighter.config.strings.help = '?'; 3235 SyntaxHighlighter.config.strings.alert = 'SyntaxHighlighter\n\n'; 3236 SyntaxHighlighter.config.strings.noBrush = 'Can\'t find brush for: '; 3237 SyntaxHighlighter.config.strings.brushNotHtmlScript = 'Brush wasn\'t configured for html-script option: '; 3238 SyntaxHighlighter.defaults['auto-links'] = false; 3239 SyntaxHighlighter.defaults['class-name'] = 'codeLinePadding'; 3240 SyntaxHighlighter.defaults['pad-line-numbers'] = true; 3241 SyntaxHighlighter.defaults['toolbar'] = false; 3242 SyntaxHighlighter.all(); 3243 3244 // Infinite scroll support 3245 if ( typeof( jQuery ) !== 'undefined' ) { 3246 jQuery( function( $ ) { 3247 $( document.body ).on( 'post-load', function() { 3248 SyntaxHighlighter.highlight(); 3249 } ); 3250 } ); 3251 } 3252</script>
vendor: 1 bytes, line 3252
3252
3253<script id="convertkit-js-js-extra"> 3254var convertkit_broadcasts = {"ajax_url":"https://www.benlcollins.com/wp-json/kit/v1/broadcasts","debug":""}; 3255var convertkit = {"debug":"","subscriber_id":"0"}; 3256//# sourceURL=convertkit-js-js-extra 3257</script>
vendor: 1 bytes, line 3257
3257
3258<script id="convertkit-js-js" src="https://www.benlcollins.com/wp-content/plugins/convertkit/resources/frontend/js/dist/frontend.min.js?ver=3.4.1"></script>
vendor: 1 bytes, line 3258
3258
3259<script id="rocket-browser-checker-js-after"> 3260"use strict";var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){return protoProps&&defineProperties(Constructor.prototype,protoProps),staticProps&&defineProperties(Constructor,staticProps),Constructor}}();function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}var RocketBrowserCompatibilityChecker=function(){function RocketBrowserCompatibilityChecker(options){_classCallCheck(this,RocketBrowserCompatibilityChecker),this.passiveSupported=!1,this._checkPassiveOption(this),this.options=!!this.passiveSupported&&options}return _createClass(RocketBrowserCompatibilityChecker,[{key:"_checkPassiveOption",value:function(self){try{var options={get passive(){return!(self.passiveSupported=!0)}};window.addEventListener("test",null,options),window.removeEventListener("test",null,options)}catch(err){self.passiveSupported=!1}}},{key:"initRequestIdleCallback",value:function(){!1 in window&&(window.requestIdleCallback=function(cb){var start=Date.now();return setTimeout(function(){cb({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-start))}})},1)}),!1 in window&&(window.cancelIdleCallback=function(id){return clearTimeout(id)})}},{key:"isDataSaverModeOn",value:function(){return"connection"in navigator&&!0===navigator.connection.saveData}},{key:"supportsLinkPrefetch",value:function(){var elem=document.createElement("link");return elem.relList&&elem.relList.supports&&elem.relList.supports("prefetch")&&window.IntersectionObserver&&"isIntersecting"in IntersectionObserverEntry.prototype}},{key:"isSlowConnection",value:function(){return"connection"in navigator&&"effectiveType"in navigator.connection&&("2g"===navigator.connection.effectiveType||"slow-2g"===navigator.connection.effectiveType)}}]),RocketBrowserCompatibilityChecker}(); 3261//# sourceURL=rocket-browser-checker-js-after 3262</script>
vendor: 1 bytes, line 3262
3262
3263<script id="rocket-preload-links-js-extra"> 3264var RocketPreloadLinksConfig = {"excludeUris":"/p/platform.js/|/(?:.+/)?feed(?:/(?:.+/?)?)?$|/(?:.+/)?embed/|/(index.php/)?(.*)wp-json(/.*|$)|/refer/|/go/|/recommend/|/recommends/","usesTrailingSlash":"1","imageExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php","fileExt":"jpg|jpeg|gif|png|tiff|bmp|webp|avif|pdf|doc|docx|xls|xlsx|php|html|htm","siteUrl":"https://www.benlcollins.com","onHoverDelay":"100","rateThrottle":"3"}; 3265//# sourceURL=rocket-preload-links-js-extra 3266</script>
vendor: 1 bytes, line 3266
3266
3267<script id="rocket-preload-links-js-after"> 3268(function() { 3269"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e=function(){function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,n){return t&&i(e.prototype,t),n&&i(e,n),e}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var t=function(){function n(e,t){i(this,n),this.browser=e,this.config=t,this.options=this.browser.options,this.prefetched=new Set,this.eventTime=null,this.threshold=1111,this.numOnHover=0}return e(n,[{key:"init",value:function(){!this.browser.supportsLinkPrefetch()||this.browser.isDataSaverModeOn()||this.browser.isSlowConnection()||(this.regex={excludeUris:RegExp(this.config.excludeUris,"i"),images:RegExp(".("+this.config.imageExt+")$","i"),fileExt:RegExp(".("+this.config.fileExt+")$","i")},this._initListeners(this))}},{key:"_initListeners",value:function(e){-1<this.config.onHoverDelay&&document.addEventListener("mouseover",e.listener.bind(e),e.listenerOptions),document.addEventListener("mousedown",e.listener.bind(e),e.listenerOptions),document.addEventListener("touchstart",e.listener.bind(e),e.listenerOptions)}},{key:"listener",value:function(e){var t=e.target.closest("a"),n=this._prepareUrl(t);if(null!==n)switch(e.type){case"mousedown":case"touchstart":this._addPrefetchLink(n);break;case"mouseover":this._earlyPrefetch(t,n,"mouseout")}}},{key:"_earlyPrefetch",value:function(t,e,n){var i=this,r=setTimeout(function(){if(r=null,0===i.numOnHover)setTimeout(function(){return i.numOnHover=0},1e3);else if(i.numOnHover>i.config.rateThrottle)return;i.numOnHover++,i._addPrefetchLink(e)},this.config.onHoverDelay);t.addEventListener(n,function e(){t.removeEventListener(n,e,{passive:!0}),null!==r&&(clearTimeout(r),r=null)},{passive:!0})}},{key:"_addPrefetchLink",value:function(i){return this.prefetched.add(i.href),new Promise(function(e,t){var n=document.createElement("link");n.rel="prefetch",n.href=i.href,n.onload=e,n.onerror=t,document.head.appendChild(n)}).catch(function(){})}},{key:"_prepareUrl",value:function(e){if(null===e||"object"!==(void 0===e?"undefined":r(e))||!1 in e||-1===["http:","https:"].indexOf(e.protocol))return null;var t=e.href.substring(0,this.config.siteUrl.length),n=this._getPathname(e.href,t),i={original:e.href,protocol:e.protocol,origin:t,pathname:n,href:t+n};return this._isLinkOk(i)?i:null}},{key:"_getPathname",value:function(e,t){var n=t?e.substring(this.config.siteUrl.length):e;return n.startsWith("/")||(n="/"+n),this._shouldAddTrailingSlash(n)?n+"/":n}},{key:"_shouldAddTrailingSlash",value:function(e){return this.config.usesTrailingSlash&&!e.endsWith("/")&&!this.regex.fileExt.test(e)}},{key:"_isLinkOk",value:function(e){return null!==e&&"object"===(void 0===e?"undefined":r(e))&&(!this.prefetched.has(e.href)&&e.origin===this.config.siteUrl&&-1===e.href.indexOf("?")&&-1===e.href.indexOf("#")&&!this.regex.excludeUris.test(e.href)&&!this.regex.images.test(e.href))}}],[{key:"run",value:function(){"undefined"!=typeof RocketPreloadLinksConfig&&new n(new RocketBrowserCompatibilityChecker({capture:!0,passive:!0}),RocketPreloadLinksConfig).init()}}]),n}();t.run(); 3270}()); 3271 3272//# sourceURL=rocket-preload-links-js-after 3273</script>
vendor: 1 bytes, line 3273
3273
3274<script id="quicktags-js-extra"> 3275var quicktagsL10n = {"closeAllOpenTags":"Close all open tags","closeTags":"close tags","enterURL":"Enter the URL","enterImageURL":"Enter the URL of the image","enterImageDescription":"Enter a description of the image","textdirection":"text direction","toggleTextdirection":"Switch Editor Text Direction","dfw":"Distraction-free writing mode","strong":"Bold","strongClose":"Close bold tag","em":"Italic","emClose":"Close italic tag","link":"Insert link","blockquote":"Blockquote","blockquoteClose":"Close blockquote tag","del":"Deleted text (strikethrough)","delClose":"Close deleted text tag","ins":"Inserted text","insClose":"Close inserted text tag","image":"Insert image","ul":"Bulleted list","ulClose":"Close bulleted list tag","ol":"Numbered list","olClose":"Close numbered list tag","li":"List item","liClose":"Close list item tag","code":"Code","codeClose":"Close code tag","more":"Insert Read More tag"}; 3276//# sourceURL=quicktags-js-extra 3277</script>
vendor: 1 bytes, line 3277
3277
3278<script id="quicktags-js" src="https://www.benlcollins.com/wp-includes/js/quicktags.min.js?ver=7.1.1"></script>
vendor: 1 bytes, line 3278
3278
3279<script id="convertkit-admin-quicktags-js-extra"> 3280var convertkit_quicktags = {"broadcasts":{"title":"Kit Broadcasts","icon":"resources/backend/images/block-icon-broadcasts.svg","attributes":{"display_grid":{"type":"boolean","default":false},"display_order":{"type":"string","default":"date-broadcast"},"date_format":{"type":"string","default":"F j, Y"},"display_image":{"type":"boolean","default":false},"display_description":{"type":"boolean","default":false},"display_read_more":{"type":"boolean","default":false},"read_more_label":{"type":"string","default":"Read more"},"limit":{"type":"number","default":10},"page":{"type":"number","default":1},"paginate":{"type":"boolean","default":false},"paginate_label_prev":{"type":"string","default":"Previous"},"paginate_label_next":{"type":"string","default":"Next"},"style":{"type":"object"},"backgroundColor":{"type":"string"},"textColor":{"type":"string"},"fontSize":{"type":"string"},"is_gutenberg_example":{"type":"boolean","default":false}},"render_callback":[{},"render"]},"content":{"title":"Kit Custom Content","icon":"resources/backend/images/block-icon-content.svg","attributes":{"tag":{"type":"string"}},"render_callback":[{},"render"]},"formtrigger":{"title":"Kit Form Trigger","icon":"resources/backend/images/block-icon-formtrigger.svg","attributes":{"form":{"type":"string","default":""},"text":{"type":"string","default":"Subscribe"},"style":{"type":"object"},"backgroundColor":{"type":"string"},"textColor":{"type":"string"},"fontSize":{"type":"string"},"is_gutenberg_example":{"type":"boolean","default":false}},"render_callback":[{},"render"]},"form":{"title":"Kit Form","icon":"resources/backend/images/block-icon-form.svg","attributes":{"form":{"type":"string"},"align":{"type":"string"},"style":{"type":"object"},"backgroundColor":{"type":"string"},"is_gutenberg_example":{"type":"boolean","default":false}},"render_callback":[{},"render"]},"product":{"title":"Kit Product","icon":"resources/backend/images/block-icon-product.svg","attributes":{"product":{"type":"string","default":""},"text":{"type":"string","default":"Buy my product"},"discount_code":{"type":"string","default":""},"checkout":{"type":"boolean","default":false},"disable_modal_on_mobile":{"type":"boolean","default":false},"style":{"type":"object"},"backgroundColor":{"type":"string"},"textColor":{"type":"string"},"fontSize":{"type":"string"},"is_gutenberg_example":{"type":"boolean","default":false}},"render_callback":[{},"render"]}}; 3281var convertkit_admin_tinymce = {"ajaxurl":"https://www.benlcollins.com/wp-json/kit/v1/editor/tinymce/modal","nonce":"a2634b599f"}; 3282//# sourceURL=convertkit-admin-quicktags-js-extra 3283</script>
vendor: 1 bytes, line 3283
3283
3284<script id="convertkit-admin-quicktags-js" src="https://www.benlcollins.com/wp-content/plugins/convertkit/resources/backend/js/quicktags.js?ver=3.4.1"></script>
3284 3285
3285<script type="text/template" id="tmpl-convertkit-quicktags-modal"> 3286 <div id="convertkit-quicktags-modal"> 3287 <div class="media-frame-title"><h1></h1></div> 3288 <div class="media-frame-content"></div> 3289 <div class="media-frame-toolbar"> 3290 <div class="media-toolbar"> 3291 <div class="media-toolbar-secondary"> 3292 <button type="button" class="button button-large cancel">Cancel</button> 3293 </div> 3294 <div class="media-toolbar-primary"> 3295 <button type="button" class="button button-primary button-large">Insert</button> 3296 </div> 3297 </div> 3298 </div> 3299 </div> 3300 </script>
3300 3301
3302<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a43adbb34832d94c',t:'MTc5MDg1MTMyMA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
3302</body> 3303</html> 3304 3305<!-- This website is like a Rocket, isn't it? Performance optimized by WP Rocket. Learn more: https://wp-rocket.me -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.