PageSourceSearch

https://www.benlcollins.com/apps-script/google-apps-script-beginner-guide/

html benlcollins.com collected 2026-10-01 10:42:02 UTC 274,901 bytes, 3,305 lines download raw bytes

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&#039;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&#039;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&#8217;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&#8217;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 &amp; 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=" &raquo; Feed" href="https://www.benlcollins.com/feed/" />
43<link rel="alternate" type="application/rss+xml" title=" &raquo; Comments Feed" href="https://www.benlcollins.com/comments/feed/" />
44<link rel="alternate" type="application/rss+xml" title=" &raquo; Google Apps Script: A Beginner&#8217;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&#038;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 &amp; 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 &hellip;" 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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;s write our first, extremely basic program, the classic &#8220;Hello world&#8221; 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&#8217;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(&quot;Hello World!&quot;);
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&#8217;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 &#8220;app isn&#8217;t verified&#8221; 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&#8217;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&#8217;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&#8217;s more information</a>).</p>
679<p>Click the &#8220;Advanced&#8221; button in the bottom left of the review permissions pop-up, and then click the &#8220;Go to Starter Script Code (unsafe)&#8221; at the bottom of the next screen to continue. Then type in the words &#8220;Continue&#8221; on the next screen, click Next, and finally review the permissions and click &#8220;ALLOW&#8221;, 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&#8217;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&#8217;d see a warning message (instead of the yellow message, you&#8217;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 &#8220;Hello world!&#8221; 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&#8217;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&#8217;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&#8217;t very descriptive, so let&#8217;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(&quot;Hello World!&quot;);
696}
697</pre>
698<p>to this:</p>
699<pre class="brush: jscript; gutter: false; title: ; notranslate" title="">
700function helloWorld() {
701  Browser.msgBox(&quot;Hello World!&quot;);
702}
703</pre>
704<p><a id="menu"></a>Note, it&#8217;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&#8217;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(&#039;My Custom Menu&#039;)
713      .addItem(&#039;Say Hello&#039;, &#039;helloWorld&#039;)
714      .addToUi();
715}
716
717function helloWorld() {
718  Browser.msgBox(&quot;Hello World!&quot;);
719}
720</pre>
721<p>If you look back at your spreadsheet tab in the browser now, nothing will have changed. You won&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;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&#8217;ll need to run the script once from the editor window and click &#8220;Allow&#8221; 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&#x5B;0];
754  const distance = route.legs&#x5B;0].distance.text;
755  return distance;
756}
757</pre>
758<h3>Saving data with Google Apps Script</h3>
759<p>Let&#8217;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&#8217;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 &#8220;saving&#8221; 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(&#039;Custom Menu&#039;)
769      .addItem(&#039;Save Data&#039;,&#039;saveData&#039;)
770      .addToUi();
771}
772
773// function to save data
774function saveData() {
775  const ss = SpreadsheetApp.getActiveSpreadsheet();
776  const sheet = ss.getSheets()&#x5B;0];
777  const url = sheet.getRange(&#039;Sheet1!A1&#039;).getValue();
778  const follower_count = sheet.getRange(&#039;Sheet1!B1&#039;).getValue();
779  const date = sheet.getRange(&#039;Sheet1!C1&#039;).getValue();
780  sheet.appendRow(&#x5B;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&#8217;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 &#8220;myFunction&#8221; 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(&#039;My Custom Menu&#039;)
798      .addItem(&#039;Insert Symbol&#039;, &#039;insertSymbol&#039;)
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(&#039;§§&#039;);
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&#8217;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 &gt; 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 &#8220;test&#8221; 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&#8217;ll have a new menu option, so click on it:</p>
822<p><code>My Custom Menu &gt; 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&#8217;ve only scratched the surface of what&#8217;s possible using G.A.S. to extend the Google Apps experience.</p>
839<p>Here are a couple of interesting projects I&#8217;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&#8217;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 &#038; 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&#8217;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&#8217;re starting out.<br />
860​<br />
861When you&#8217;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 &#038; 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 &ldquo;Google Apps Script: A Beginner&#8217;s Guide&rdquo;		</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/983c8eda9889cbfea5e4ed76088bb664718d9fa7f2f572a55a396efce2c7be37?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/0f514621b6fb65a0073127dd579ee652113540dd0658e86a9efa2de0c2b6a691?s=112&#038;d=mm&#038;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 &#8220;legs&#8221; from undefined. (line 11, file &#8220;Code&#8221;)<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/8db5075ded4f770be6070799ab30c8b5893030101b81bf65ed4455e382280814?s=112&#038;d=mm&#038;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&#8217;m facing the same problem. Strangely enough it doesn&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e90fcc477cfc16ee368c8da681601398114212b8058ed5e8025eb39051e1594a?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1225364d1704a6faa9fe8ce1da7b38f6e2c397d11eea52c003b57e0090127425?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/5bb4fa9f0facf6feeb8bcc07e3835e92a67ee6e3f36e87136f57d9d146cbbafb?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6700be797feb34b587c9154667bd23ddd2e5a2249e648f4e79f0280b7ffd52fb?s=112&#038;d=mm&#038;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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/f42e7d761dda23a2250731b172a53a23e253e32e6f4a3bae9166fa35a263e54d?s=112&#038;d=mm&#038;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(&#8216;a:b&#8217;) 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cd0861da499ea5ad7e14abfd9b55c65fef90762ebe2239cd83e715436778940d?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;t be any substantial delay, certainly not a minute. The script could be affected by your internet connection speed, but I wouldn&#8217;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&#8217;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d4a91745b10b25d20a628d573e5df923f79f5e4bd7b8565407c21228a27202e8?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/95bba1868c1f7f25d70a03f21e20f8bcd87a26a6e65b5ccfdd2ada08fce8f497?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;s a list of resources at the end of this post which is where I&#8217;d start. Then try creating your own scripts and googling for answers when things don&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/55760f5cc6f5e6af71efc781c24e79dc6777a7d3d9ab81244aeb3e0d5b2421a3?s=112&#038;d=mm&#038;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&#8217;m french, so excuse me for my approximate English &#8230;<br />
1172I&#8217;ve tested your &#8220;Custom function/maps example&#8221; paragraph, but I&#8217;ve an error !<br />
1173When I validate the formula in spreadsheet it says: TypeError: Unable to read the &#8220;legs&#8221; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/3a23bb75edd85af1a7fcd4ebe19108339fda745e580b98191e74151d390b9a5b?s=112&#038;d=mm&#038;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&#8217;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&#8212;&#8212;&#8212;<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. &#8220;XASD*&amp;^&#8221;). So perhaps one of our locations isn&#8217;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&#8212;&#8212;&#8212;-</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&#038;d=mm&#038;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 &#8216;Dover&#8217;, but until I put &#8216;Dover, Kent&#8217; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/f715371710939112c96de773bb9bc93ecc730a4a3d20fc5acd93fc4e563d318f?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;m launching&#8230;.next week (20th Feb)! I walk through how to create it step-by-step, including the apps scripting.</p>
1293<p>P.S. There&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/4fc6b74acdaec0bdf51357be47e845162a3ba4ed004f519b9e9c69ad37e0c57f?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/84e4c84b7574ea596b1fb1df2ca2e1552aeb7332255f739589e7d5cd4df563df?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&#038;d=mm&#038;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 &#8220;Code&#8221;) 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;s the exact error message you&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/89ad638964e8e644b4abbddf01835fb56b5ff745c4be157e3e12484f2f525c5f?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/7414ee6f59a5e884b205487fba02604f25f9a95ea4c71244746a428eaf06f490?s=112&#038;d=mm&#038;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&#8217;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 &#8220;Script editor&#8221;. 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e0385c904e9f5002dc9529eb4fe9daa25bea90d8455aaedc353839216418d0ab?s=112&#038;d=mm&#038;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(&#8216;My Custom Menu&#8217;)<br />
1450      .addItem(&#8216;Say Hello&#8217;, &#8216;helloWorld&#8217;)<br />
1451      .addToUi();</p>
1452<p>I got a &#8220;.createMenu undefined&#8221; error&#8230;</p>
1453<p>didn&#8217;t shake the error message until I rewrote to</p>
1454<p> var ui = SpreadsheetApp.getUi().createMenu(&#8216;MyMenu&#8217;)<br />
1455           .addItem(&#8216;Hello There&#8217;, &#8216;helloWorld&#8217;)<br />
1456           .addToUi();<br />
1457and it all worked fine.<br />
1458Have no idea what the difference is.</p>
1459<p>I&#8217;ve had this kind of thing happen before in app script though&#8230;<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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e5671f5e1eafbb7ad3a26d72397a3554fd1e895b47522de17bef7b92601a8cbb?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/3a05517743773ab814e74b10c18ea6c85be66a749f660f6c5f1a5866b1fe6ec4?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1a8a587c0eea4cbcf12f97453b883f814ebb115ae05efcb0ccf06c543caed125?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=112&#038;d=mm&#038;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 &#8211;  Thanks!</p>
1538<p>I&#8217;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&#8220;TypeError: Cannot read property &#8220;legs&#8221; from undefined.&#8221;</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;s most likely caused by ambiguity in the leg, which this basic function isn&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/fab1fe9e23dbc5592e0d1acdcd50382c147808ee4ef3819c4b069bbba72bc4a9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/c2626286b3d40dd16f96cbe0f53fd285f3f54ef8adf2d702a98047759968fb89?s=112&#038;d=mm&#038;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&#8217;m just starting to explore all the possibilities of Google App Scripting.  I don&#8217;t have any main goal yet, so I&#8217;m just fiddling around a bit.</p>
1603<p>For starters I&#8217;d like to know whatever is possible with an app inside a google site, and I didn&#8217;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 &#8220;Google Script App&#8221;
1604, and add that script I just made.  Then for that added &#8216;widget&#8217;, you can click on the edit button.  I&#8217;d like to know how to add my custom settings on that page.</p>
1605<p>I know it&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;ve never used Google Sites, so I&#8217;m not sure the answer to your question. I&#8217;d suggest posting your question to the Google Apps Script forum where I&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d355d68a15db4041fc79a47e764b12f62285e59d25b163f542c7f23f30233922?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/bf6a6f75e200404263b62720a0f0f9d4e75b83609017bf5b3a07ce2d795d6016?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1edd2303598f3feada2d48bb1145154fdf2226fa6621d1bd8455d74bcf80f10a?s=112&#038;d=mm&#038;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&#8217;s question.<br />
1754How do I get the &#8220;suggestion screen&#8221; on screen when I&#8217;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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/c824c4adca3f13ed74515b5916ebba1529e9225c10158c9378054382c4183011?s=112&#038;d=mm&#038;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 &#8216;We&#8217;re sorry, a server error occurred. Please wait a bit and try again. (line 4, file &#8220;Code&#8221;)&#8217;. The code is below &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=112&#038;d=mm&#038;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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/5ed8768aac7139a57a19be2b82fc96a72345ac8fac4855c70548f9797aec0ccb?s=112&#038;d=mm&#038;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 &#8211; did this problem ever get resolved? I&#8217;m having the same issue and can&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d9a41a24a7f9bc3e6c312b86a4ac09861eca7bd202b24e596a0eef2ac9ad686d?s=112&#038;d=mm&#038;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&#8230;<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6e0ee33c8284d6f61e8a8e8e094d5c2469a8eb19907afa64cd00aebb456f7b2c?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d18256bee9408d2e6a5dea914a1a076b9cb0bb0c9a2dc4bd6a4110ff0c2c90ad?s=112&#038;d=mm&#038;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 &#8220;Code&#8221;)<br />
1876&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
1877function myFunction() {<br />
1878  Browser.msgBox(&#8220;hello&#8221;);<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/c8bbc70cd4a0258db70b6981d85aff5093df92f4898c185910be1a2dea4f0d54?s=112&#038;d=mm&#038;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: &#8216;Cannot call Browser.msgBox() from this context; have you tried Logger.log() instead? (line 2, file “Code”)&#8217;.</p>
1897<p>The Authorization window DID pop up, and I even got an email from Google saying &#8220;HelloWorld was granted access to your Google account&#8221;, but I still get the &#8216;Cannot call Browser.msgBox&#8217; error.</p>
1898<p>As someone pointed out above, getting an error in &#8220;Hello World&#8221; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;s not for you. </p>
1918<p>Alternative first script: You can change the code to:</p>
1919<p><code>function myFunction() {<br />
1920&nbsp;&nbsp;&nbsp;&nbsp;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/143fc1e44bb914e6de6d80ac128f4831d4320fde5c688451a38139d6993f8007?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e793b2c57ca3a7d7b95a9212b244855eadac2dab6010d9c2c2730c8843e8ae1d?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/15e400a117b9bf8958d7f95db4b7e7622dece5cd9b1560a54c16a62a877424f3?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/b60beb5bc5df7472b902869cb1bf0b44da50bed32a68fc648560e435d73f66df?s=112&#038;d=mm&#038;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 &#8211; <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> &#8211; and at the end I thought &#8220;hang-on, that name rings a bell. It&#8217;s <i>that</i> Ben Collins. Glad to hear the business is going well. I&#8217;ve been migrating up towards the GSheet UI rather than being down of the depths of &#8220;server-side&#8221; Apps Script, and been really enjoying clients with more business/systems analysis and getting GSheets working for them, so I&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1b43eb9a326b014579c855cce19ed43d39575654cc51b4ba9cab0a5d7f3c80cc?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/959439f9b18dfdda819c01ba37d6d3a369b0bf58be1f493b65737a24aab89d8b?s=112&#038;d=mm&#038;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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e6118913d0de1621627c3750b384cc8b92cbe35b6a47d2e9c8c55eee9a5df0f0?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/af0e789b440fba5714e48884776612628108df287f5572cb4fe37fe470517866?s=112&#038;d=mm&#038;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 &#8220;Cannot call SpreadsheetApp.getUi() from this context. (line 2, file &#8220;GetCode&#8221;)&#8221;</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/db68599ea6c703151e5df5c4327e32d8d6639256d4659d2983e67a351643e4aa?s=112&#038;d=mm&#038;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 &#8211; 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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d5d51f866c27eba7a2689a503daca40914466ea5e82c02f6eb2d29c001521075?s=112&#038;d=mm&#038;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 &#8220;TypeError: Cannot call method &#8220;forEach&#8221; of undefined.&#8221; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/836f4d08d06005bd168dcad6d71bd5fc25c114ea4e0bf343f91b61bdec3d126b?s=112&#038;d=mm&#038;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 &amp; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/84b039446375547c80258f2d09769daef6419de1e9ec535cf5acb8f22a360e18?s=112&#038;d=mm&#038;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>&#8220;Google script to activate the cell on button click. Button activates the cell in which it is placed.&#8221;<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1b5402d534353d3ccb0b007528e26cc54440768258c37462e16d03852f3e221f?s=112&#038;d=mm&#038;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&#8217;ve been following your class on Google Sheet Functions and the video tutorials are quite self explanatory &#8212; like it so much. What kind of screen casting software you&#8217;re using for those videos&#8230; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/9aa2f948c3aa95e8e3c6a651384b0d626f8e0d582d82cd4298c385f62701d138?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/98540a5c15d991ce2e1069952df833f88e7a20651ac453ff8ba092822a0eb1a2?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e657aa0ac84ea927950654a7d404d00054e84327600f6ec35b70e1ff34f1c703?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/23ba556cd7c6d1141fd1ac6138dca0c99f64cd2d9b4119eb6ab5d9c28d54294d?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/fa794ae2d3727d3c746977a23b4c8f4670cec6cd8014134eac638fbf07d05bb6?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/75b958db859d2d812a829e7cf95d5225ed1b52f1542881a2fd445317d22b51a9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/bf627374d7ba88242dafb617bc70d22de1d48010711336d89ebe3093b385955f?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6c728f7eaacf2b2854e94c4204e46986858dfb9d248a833e9aa8327b58186f40?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/c421dc1f6cc09ddef3b27cfd1ac68c61acb7f5a7357732574db0038ea86ba504?s=112&#038;d=mm&#038;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&#8217;t even get &#8220;Hello World&#8221; to print&#8230; it just says &#8220;Running Function myfunction&#8230; Cancel Dismiss&#8221; and never progresses beyond that.  I did authorize it as described in the article&#8230; it seems so simple yet I can&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/34a191c8ba9a1ff2c97805ac00c7172ddddf3abb923d2c6f008245bb123999c5?s=112&#038;d=mm&#038;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 &#8220;get fish&#8221; then the email should send, &#8211; is this part correct? : &#8211;</p>
2453<p> if (monthSales = &#8220;get fish&#8221;){</p>
2454<p>the full code is below: &#8211; </p>
2455<p>function CheckSales() {<br />
2456  // Fetch the monthly sales<br />
2457  var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&#8220;myfish&#8221;).getRange(&#8220;E1:E1000&#8221;);<br />
2458  var monthSales = monthSalesRange.getValue();<br />
2459  // Check totals sales<br />
2460  if (monthSales = &#8220;get fish&#8221;){<br />
2461    // Fetch the email address<br />
2462    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(&#8220;Sheet1&#8221;).getRange(&#8220;B2&#8221;);<br />
2463    var emailAddress = emailRange.getValues();</p>
2464<p>    // Send Alert Email.<br />
2465    var message = &#8216;Get Fish &#8216;<br />
2466    var subject = &#8216;Get Fish&#8217;;<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/4463fadd5bd508cbd61b0fc3eb6d6f384ca36fdc474e49d1468494a2038fa860?s=112&#038;d=mm&#038;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&#8230; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d7a8f074e778bf286bb8e4ff354ffbbab84f9314f59dc6a6f1bd408de7b09d9b?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/4bf512af8402ce73489c93385ee8c2c2f0aa7efa1668b50c53a875b5985aeee5?s=112&#038;d=mm&#038;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? &#8220;Then click the menu Tools &gt; &#8221;  I&#8217;m using Chrome I made a new tab&#8230; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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 &#8211; It&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/da9eb9a3f48ca46d1105d3e853fd8512146e0b15d9c751c475608f7efe0510ca?s=112&#038;d=mm&#038;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&#8217;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&#8217;t even know if this program exists. Or I&#8217;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/b0abe4d2d2c6eb1d92162db6386eeb61f26449cefdbe21eeb26aaa951d10e62d?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/24fb05d258e37bdbc395358e74d04fa7569b77208034670ece06da853dee99a9?s=112&#038;d=mm&#038;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 &#8220;Hello World&#8221; 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 &#8220;Code&#8221;). I also tried with &#8216;logger.log&#8217; (instead of &#8216;browser.msg&#8217;) 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/06b8252381967f274436a570450ecc3a29285f2bcf270b6d2eaa3eccb03e8ea5?s=112&#038;d=mm&#038;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 &#8220;My custom menu&#8221;</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/e83d33fb499dea28205db8e6c352209e79cd2cea9fe50f8736dbdaac32700ff5?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/186dd1a8235ef10c36e53ead9bb23e08b9d9b1be84d148ea2cdc2ccd12cef286?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/950399050316a8449b3be1f4cd52e9fb19f85a94e7549d14f5e6d1c0cd860864?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/3e05a9fcbeefc94def2d5d8c46d8468bd59fa0ccf8e0ba1ec8a0b131968d8681?s=112&#038;d=mm&#038;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&#8217;s only linking with one row and not with the other 2<br />
2723=ifs(D3=&#8221;YTS&#8221;,&#8221;Wireframe YTS&#8221;,D3=&#8221;WIP&#8221;,&#8221;Wireframe WIP&#8221;,D3=&#8221;RTK&#8221;,&#8221;Wireframe RTK&#8221;,D3=&#8221;Review&#8221;,&#8221;Wireframe Review&#8221;,D3=&#8221;Correction&#8221;,&#8221;Wireframe Correction&#8221;,D3=&#8221;Closed&#8221;,&#8221;Wireframe Closed&#8221;,H3=&#8221;YTS&#8221;,&#8221;Storyboard YTS&#8221;,H3=&#8221;WIP&#8221;,&#8221;Storyboard WIP&#8221;,H3=&#8221;RTK&#8221;,&#8221;Storyboard RTK&#8221;,H3=&#8221;Review&#8221;,&#8221;Storyboard Review&#8221;,H3=&#8221;Correction&#8221;,&#8221;Storyboard Correction&#8221;,H3=&#8221;Closed&#8221;,&#8221;Storyboard Closed&#8221;,L3=&#8221;YTS&#8221;,&#8221;FCD YTS&#8221;,L3=&#8221;WIP&#8221;,&#8221;FCD WIP&#8221;,L3=&#8221;RTK&#8221;,&#8221;FCD RTK&#8221;,L3=&#8221;Review&#8221;,&#8221;FCD Review&#8221;,L3=&#8221;Correction&#8221;,&#8221;FCD Correction&#8221;,L3=&#8221;Closed&#8221;,&#8221;FCD Closed&#8221;)</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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/02dca1261145f233e2a0999ca6fe63a04013bf74b3632107b2031d5eb01b57a8?s=112&#038;d=mm&#038;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 &#8230; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/c0ea2c768bbc9a71747b6e6fdb2471208ca91e461cca6012941e0819912dbd0f?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6b831aef87fe795b6569f563a93d46818fd9e96fe7d492e104e2496a5472dea3?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cf836914a45799fa7a5ec00ba9f605c408f84ccad6fd6dcf01a4797ac654a0c5?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/1332ea957df5e07167d8ddbaf28d44d205e27c3e836395e2ece040fbd6407f00?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/4419edee5b03c16a339ef2d490fb75fc9e04de8e86d7a70d3bbbff9347a3b01e?s=112&#038;d=mm&#038;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&#8217;t find the &#8220;script editor&#8221; in the &#8220;tools&#8221;
2870 menu&#8230; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/457954b0e87cfe4bed5c2c804c550ed9c3cad3e705c3b07712f72bed3cc92abd?s=112&#038;d=mm&#038;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 &#8220;Tools&#8221; there is no &#8220;Script Editor&#8221; 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 &#8220;Script Editor&#8221; function, but I don&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/97b043a266bf683a04340df0348d395c73a21ab376129d17008cc7440ec1ff83?s=112&#038;d=mm&#038;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 &#8211; 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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/6dcbaad1e31b4df4774ac4062de434e6119d1deaee2bdd00095b0f87c96e1e9e?s=112&#038;d=mm&#038;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 = &#8220;Data&#8221;;<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(&#8220;Form&#8221;); //Form Sheet<br />
2973  var datasheet = ss.getSheetByName(&#8220;Data&#8221;); //Data Sheet</p>
2974<p>  var str       = formSS.getRange(&#8220;B5&#8221;).getValue();<br />
2975  var values    = ss.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();<br />
2976  for (var i = 0; i &lt; 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(&quot;B5&quot;).setValue(row[0]),<br />
2981        formSS.getRange(&quot;B7&quot;).setValue(row[1]) ,<br />
2982        formSS.getRange(&quot;E5&quot;).setValue(row[2]) ,<br />
2983        formSS.getRange(&quot;E7&quot;).setValue(row[3]) ,<br />
2984        formSS.getRange(&quot;H5&quot;).setValue(row[4]) ,<br />
2985        formSS.getRange(&quot;H7&quot;).setValue(row[5]) ,<br />
2986        formSS.getRange(&quot;B9&quot;).setValue(row[6]),<br />
2987        formSS.getRange(&quot;E9&quot;).setValue(row[7]) ,<br />
2988        formSS.getRange(&quot;H9&quot;).setValue(row[8]) ,<br />
2989        formSS.getRange(&quot;H11&quot;).setValue(row[9]) ,<br />
2990        formSS.getRange(&quot;H13&quot;).setValue(row[10]),<br />
2991        formSS.getRange(&quot;B11&quot;).setValue(row[11]),<br />
2992        formSS.getRange(&quot;D11&quot;).setValue(row[12]),<br />
2993        formSS.getRange(&quot;B12&quot;).setValue(row[13]),<br />
2994        formSS.getRange(&quot;D12&quot;).setValue(row[14]),<br />
2995        formSS.getRange(&quot;B13&quot;).setValue(row[15]),<br />
2996        formSS.getRange(&quot;D13&quot;).setValue(row[16]),<br />
2997        formSS.getRange(&quot;B14&quot;).setValue(row[17]),<br />
2998        formSS.getRange(&quot;D14&quot;).setValue(row[18]),<br />
2999        formSS.getRange(&quot;B15&quot;).setValue(row[19]) ,<br />
3000        formSS.getRange(&quot;D15&quot;).setValue(row[20]),<br />
3001        formSS.getRange(&quot;B16&quot;).setValue(row[21]),<br />
3002        formSS.getRange(&quot;D16&quot;).setValue(row[22]) ]];</p>
3003<p>      datasheet.getRange(INT_R, 1, 1, 23).setValues(values1);<br />
3004       SpreadsheetApp.getUi().alert(&#039; &quot;Data Updated &quot;&#039;);<br />
3005      return row[RETURN_COL_IDX];<br />
3006    }<br />
3007  }<br />
3008}</p>
3009<p>It is updating the value as &quot;Range&quot;.<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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/cfe26057864988decabfa5d034dd07c0d6890ddea6c1fcdb5a2acc39c963be30?s=112&#038;d=mm&#038;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&#8217;s possible to write a Google script where you can upload a CSV file of addresses you&#8217;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/7c85292caaf9b658a367d41fa425e33df9301eb5309b59a48216d15d807db1d8?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/64094a7af6cf603dcb6a28ddc0eb0fd7bb791aaf317e268ba49ec999365eaec9?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/62ca1114a8e5d314b29de2150b53b95567a7e8455c970a1c391fe67653e63f1a?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/fc87b336ca40dbc14d8eeb15679378ef38d553c8728e193e123a2b85b6f41048?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/29f01da5575b540d356c1765fcb64fb348db2de9bd70527f1a2509d682c5c81c?s=112&#038;d=mm&#038;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&#8217;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/d57c26f8a47c21a394d56fa4642b1e9db241d1a28a1abb8d200edb5d8fab2101?s=112&#038;d=mm&#038;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&#8217;m such a big fan of all your work. I just want to say thank you for keep sharing your idea to everyone &lt;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/42b4944cb75e0a6450f40ceec0d7384252b17543ccf6d49472834398df989970?s=112&#038;d=mm&#038;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&#038;d=mm&#038;r=g' srcset='https://secure.gravatar.com/avatar/a1aa990715e5107d87c89919a2f394774dd99aaf1ae02085a72ffb8b1764fdf9?s=112&#038;d=mm&#038;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&#8217;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.