- 84
- 199 608
Matt Brigidi
United States
เข้าร่วมเมื่อ 16 ก.ย. 2013
The goal of this channel is to provide solutions to data problems.
Additionally, it wants to help you expand your computer language fluency, so that you can tell computer programs what you want. The mission is to spend less time thinking about managing data so that you can spend more time making decisions with data.
This channel creates videos about:
1. Google Sheets
2. Google Apps Script
3. Python
4. Creating pipelines and infrastructure for automated solutions to eliminate manual actions
5. Creativity with data visualization and presentation
Hopefully you find the resources helpful!
Additionally, it wants to help you expand your computer language fluency, so that you can tell computer programs what you want. The mission is to spend less time thinking about managing data so that you can spend more time making decisions with data.
This channel creates videos about:
1. Google Sheets
2. Google Apps Script
3. Python
4. Creating pipelines and infrastructure for automated solutions to eliminate manual actions
5. Creativity with data visualization and presentation
Hopefully you find the resources helpful!
Google Apps Script for Beginners: How to write Functional programs | Lesson 7
This is the seventh video in a series that aspires to teach Google Apps Script to beginners. You will learn how to create a function and then implement it using a FOR loop, and an IF statement.
Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
มุมมอง: 61
วีดีโอ
Google Apps Script for Beginners: How to use IF, ELSE IF, and ELSE | Lesson 6
มุมมอง 67วันที่ผ่านมา
This is the sixth video in a series that aspires to teach Google Apps Script to beginners. You will learn how to use IF, IF ELSE, and ELSE to set conditional statements in your scripts. Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
Google Apps Script for Beginners: how to use loops | Lesson 5
มุมมอง 8014 วันที่ผ่านมา
This is the fifth video in a series that aspires to teach Google Apps Script to beginners. You will learn how to create a script project, how to organize your file directory, and how to log out to the console. NOTE: I wanna clarify the portion of the video when I discuss defining the value of your iterable variable (10:47). I had a shallow use case bc I typically loop through arrays from Google...
Google Apps Script for Beginners: how to manage arrays | Lesson 4
มุมมอง 8221 วันที่ผ่านมา
This is the fourth video in a series that aspires to teach Google Apps Script to beginners. You will learn how to work with arrays (aka lists), as well as two-dimensional arrays (aka list of lists). Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
Google Apps Script for Beginners: how to work with dates and time | Lesson 03
มุมมอง 100หลายเดือนก่อน
This is the third video in a series that aspires to teach Google Apps Script to beginners. You will learn how to work with dates, as well as time. Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
Google Apps Script for Beginners: how to combine words and do math | Lesson 2
มุมมอง 107หลายเดือนก่อน
This is the second video in a series that aspires to teach Google Apps Script to beginners. You will learn how to use the plus symbol ( ) with strings for concatenation and with numbers to do math. Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
Google Apps Script for Beginners: Lesson 1
มุมมอง 252หลายเดือนก่อน
This is the first video in a series that aspires to teach Google Apps Script to beginners. You will learn how to create a script project, how to organize your file directory, and how to log out to the console. Please check out this playlist if you'd like to follow the series: th-cam.com/play/PL_xiAt6o4ZXwYTKr7G6R_ajM7C7UZ32fB.html
How to remove duplicates using Google Apps Script
มุมมอง 92หลายเดือนก่อน
This video will teach you how to extract unique values from a two-dimensional array using Google Apps Script. The result in a distinct list of names from a Google Sheets data set.
How to use VLOOKUP with multiple conditions in Google Sheets
มุมมอง 902 หลายเดือนก่อน
This video will teach you how to use multiple columns with VLOOKUP. Unfortunately, this solution only works with Google Sheets.
How to apply conditional formatting with more than one condition in Google Sheets
มุมมอง 1072 หลายเดือนก่อน
How to apply conditional formatting to a Google Sheet where there is more than one condition. This video will teach you how to compose a Google Apps Script project that will allow you to set multiple conditions that will result in conditional formatting in a Google Sheet. If you would like to learn more about Google Sheets automation, then please checkout this playlist: th-cam.com/play/PL_xiAt6...
Automate emails w/ Google Sheets when line item is overdue (payment/project tracker)
มุมมอง 1742 หลายเดือนก่อน
Automate emails using Google Sheets. This video will teach you how to write an application that will automatically send emails when a line item is marked as 'overdue'. Additionally, the script will keep track of the last time an email was sent and will include that information in the email message. If you would like to learn more about email automation, then please checkout this playlist: th-ca...
How to Automate Google Slides with dynamic data tables and images
มุมมอง 2352 หลายเดือนก่อน
Automate Google Slides with a Google Sheet and Google Apps Script. This video will teach you to create an automated slide deck using data from Pro-Football-Reference. You can watch all the breakout videos from this series by using this playlist: th-cam.com/play/PL_xiAt6o4ZXw_8CzO8aQ5NhkJ0dVt7Zj0.html Approximate time stamps 0:00: Create the deck 16:03: Move files in Google Drive 20:55: Developm...
How to insert images in Google Slides using Apps Script | Automate Google Slides | Lesson 12
มุมมอง 2322 หลายเดือนก่อน
How to automatically insert images from Google Drive into Google Slides. This is the 12th video in a series, which will culminate in an automated slide deck using data from Pro-Football-Reference. You can watch all the videos by using this playlist: th-cam.com/play/PL_xiAt6o4ZXw_8CzO8aQ5NhkJ0dVt7Zj0.html In this video, you will be taught how to dynamically insert images into Google Slides using...
How to get images from Google Drive | Automate Google Slides | Lesson 11
มุมมอง 1413 หลายเดือนก่อน
How to get images from Google Drive for automation work. This is the 11th video in a series, which will culminate in an automated slide deck using data from Pro-Football-Reference. You can watch all the videos by using this playlist: th-cam.com/play/PL_xiAt6o4ZXw_8CzO8aQ5NhkJ0dVt7Zj0.html In this video, you will be taught how to dynamically collect images stored in Google Drive using Google App...
How to insert lines into Google Slides | Automate Google Slides | Lesson 10
มุมมอง 1253 หลายเดือนก่อน
How to insert lines into Google Slides | Automate Google Slides | Lesson 10
Automated dynamic data table in Google Slides | Automate Google Slides | Lesson 09
มุมมอง 1803 หลายเดือนก่อน
Automated dynamic data table in Google Slides | Automate Google Slides | Lesson 09
How to get unique names from a Google Sheet | Automate Google Slides | Lesson 08
มุมมอง 1313 หลายเดือนก่อน
How to get unique names from a Google Sheet | Automate Google Slides | Lesson 08
How to get data from Google Sheets using Google Apps Script | Automate Google Slides | Lesson 07
มุมมอง 3154 หลายเดือนก่อน
How to get data from Google Sheets using Google Apps Script | Automate Google Slides | Lesson 07
How to scrape NFL data into Google Sheets using Python | Automate Google Slides | Lesson 06
มุมมอง 2904 หลายเดือนก่อน
How to scrape NFL data into Google Sheets using Python | Automate Google Slides | Lesson 06
How to insert & stylize text in Google Slides | Automate Google Slides with Apps Script | Lesson 05
มุมมอง 1814 หลายเดือนก่อน
How to insert & stylize text in Google Slides | Automate Google Slides with Apps Script | Lesson 05
How to add slides to a Google Slides Deck | Automate Google Slides with Apps Script | Lesson 04
มุมมอง 1524 หลายเดือนก่อน
How to add slides to a Google Slides Deck | Automate Google Slides with Apps Script | Lesson 04
How to automatically delete old projects | Automate Google Slides with Apps Script | Lesson 03
มุมมอง 1415 หลายเดือนก่อน
How to automatically delete old projects | Automate Google Slides with Apps Script | Lesson 03
How to move a file to Google Drive folder | Automate Google Slides with Apps Script | Lesson 02
มุมมอง 2825 หลายเดือนก่อน
How to move a file to Google Drive folder | Automate Google Slides with Apps Script | Lesson 02
How to create a Google Slides deck | Automate Google Slides with Apps Script | Lesson 01
มุมมอง 1.2K5 หลายเดือนก่อน
How to create a Google Slides deck | Automate Google Slides with Apps Script | Lesson 01
Automated email on status change in Google Sheets
มุมมอง 1.5K6 หลายเดือนก่อน
Automated email on status change in Google Sheets
Automate emails to 50 or more addresses with Google Apps Script
มุมมอง 4157 หลายเดือนก่อน
Automate emails to 50 or more addresses with Google Apps Script
Automated Project Tracker and 'To Do' list in Google Sheets
มุมมอง 3.9K8 หลายเดือนก่อน
Automated Project Tracker and 'To Do' list in Google Sheets
Python with Google Sheets: How to read & write using gspread
มุมมอง 1.2K8 หลายเดือนก่อน
Python with Google Sheets: How to read & write using gspread
Python with Google Sheets: How to set up gspread
มุมมอง 1.7K9 หลายเดือนก่อน
Python with Google Sheets: How to set up gspread
Python Pandas Tutorial 03: How to load data from Google Sheets, Excel, .CSV, and PDFs (Google Colab)
มุมมอง 1.3K9 หลายเดือนก่อน
Python Pandas Tutorial 03: How to load data from Google Sheets, Excel, .CSV, and PDFs (Google Colab)
You’re a great teacher, Matt. Thank you for all your effort. Is there a way to import dynamic data using API public and private keys. I can get it to work in terminal on macOS and then copy and paste into Google sheets, but I can’t get it to work in Google app script.
Hi Matt, I like the script extremely helpful. I have a question if you don't mind. I can run the script and it works as expected but when I do an update to the spreadsheet it never runs the script. What should I be looking at? Thanks,
How can I center and also insert spacing between the lines of a text?
This was amazing
that’s so kind of you to say! i’m glad you found it helpful
Thank you for the tutorial.
my pleasure - i’m glad you found it helpful
Email receiver doesn’t see sender name they only see the email
sorry - where is that happening? in the from portion?
How do I get this to happen but a single email go out at ounce
i have a playlist of videos on email projects. my apologies bc it’s been sometime since i recorded them. i think a few of these are for “mailing lists” where a digest is sent: th-cam.com/play/PL_xiAt6o4ZXwHsf-NxF3RzWDVBQARMGx4.html&si=cEDLlyAM-Nl70Cru
@ thank you
@@LittleBricksCharityGuy my pleasure - happy to help you so please let me know if you don’t find what you need
How do you add an attachment to the email. I need to add a .csv to an automated email system. Gmail api and smtp won’t work due to restrictions outside of my control
hi, thanks for the video. I need the onEedit function on all 5 seperate worksheets. Do you have a script I can use or should I do the same function multiple times? thanks!
you can find all the code from this tutorial here: www.mattbrigidi.com/tutorials/google-sheets/how-to-automate-emails-google-sheets/
Thank you!!
Awesome content! Thanks for sharing mate
my pleasure! i’m glad you found it helpful
What was the shortcut you used when you selected column B to highlight all other columns to delete?
Hmm, tough to say (i recorded this a few months ago). I'm on a mac but here are some shortcuts that might help: 1. control + space bar: highlight the whole column of the cell you are in 2. shift + command + right arrow: highlight everything to the right of the highlighted column 3. shift + command + left arrow: same as above but to the right
Need more please. These are so helpful
I'm glad you think so - I have a new one scheduled for every saturday from now until June 2025. I hope you'll find them as helpful as this one
merci , ça bien marché pour moi
i'm glad it worked for you!
can you link the spreadsheet so i can use the data?
How do you add an alignment center to a program please and thank you
Incredibly helpful! I was missing the ‘date’ component in my query, and it was driving me crazy why it wasn’t working. Also really appreciate what’s going on in the background with what the computer thinks it’s working with (e.g., 2022-06-01). Thank you!
My pleasure! I'm glad this helped you!
There are only 3 or 4 people on the entire Internet who make such wonderful instructional videos about Appscript and the Google Universe anyway. You, dear Matt, are definitely one of them. I admire people who spend so much time helping others. Thank you very much for this, your videos have helped me a lot on my journey. 💐 I have a question Matt. Is there any possibility to use appscript with an appsheet database ? i use it only with spreadsheets .... but it would be very nice to get access to an appsheet database directly.
@mattbrigidi Hello Matt, I have some questions regarding automated emails, Google Sheets, and Gmail. I have watched a fair number of your videos, but I haven't found the information I need yet. Also, not to lie, I'm not very good at coding. I was wondering if you might have the time to provide some guidance. Thanks Kevin
2 questions. 1 how do you create a new project on python. and 2 can you do another seris like this but how to automate a existing google slide use sheets? Please and thank you.
Hello, thanks for the great video. One question - how would a 22nd line on function 1 would look like if I wanted to extract any changes made to just one column, applying to all existing and future rows? I would really appreciate it.
Thank you for this video! This is pure gold!
i’m glad you enjoyed it!
is there a way to donwload the script file from what you have already written
i’m working on a way and will update the comment section once i’m ready!
here's a link to the code: www.mattbrigidi.com/tutorials/google-sheets/how-to-automate-emails-google-sheets/
very helpful Matt ... as all your videos ... thanks a lot for your work 🍩🍩🍩🍩🍩💐
ty so much - that’s so kind of you to say 🙏
Excellent video. I am going to Wade through here, all 2 hours! Thank you for posting
i’m glad to hear you’re excited about watching this! let me know how it goes/if i can help with anything!
@mattbrigidi my mission is to turn this into a project PunchList. I guess I'll start with inserting contract reference line(s) for each item.
Hey Matt! Great video! Just wondering… How can you replace text with the table that’s been made to a certain column? I have a GDocs template of a file ready and now I want my table, up until a certain column, to replace the tag I’ve set on the template file.
Thank you so much! I used the workflow builder and make some changes, and it worked!
wooo! congrats!
Amazing video and the way how you explained the process was so clear. Please allow me ask this. Is the message sent only if the new data was input to the GS or is it also sent when the existing data was changed for example the amount. Thanks again for your video.
Thank you for the kind words - you should be able to use Google Apps Script's triggers section to define when the message is sent. I believe this series uses a time based trigger but you could set it up so that it sends the message on change or based upon a certain column having a change.
Hi Matt Great video! I’m interested in learning how to schedule a Slack notification using Google App Script. Could you share some insights on how to set a specific date and time for that? Thanks!
Thanks for the kind words! this video has a playlist which i think demonstrates how to use app script triggers to schedule a daily message: th-cam.com/play/PL_xiAt6o4ZXyvS_cKp1ftG4a7SC-y5QWo.html&si=H4FXxzzg_nENyr72
Thank you so much for the video!! If I want the email to be sent out with a constant CC to one particular email, how do I add on or adjust the code?
i’m glad you found it helpful! here’s a video on bcc - i imagine cc is very similar. let me know if this doesn’t help and i can look into cc more th-cam.com/video/iC0_53Bfofo/w-d-xo.htmlsi=WTSWhOmIYi0JQjhl
@Matt, Thanks, great job.
my pleasure! thanks for the kind words
Hey y'all, if anyone else got the error (or similar): ReferenceError: sheets is not defined getSheetById @ getSheetById.gs:10 main@Code.gs:4 You may have a small typo on the getSheetById.gs file, make sure everytime you mention 'sheets' it matches the variable name you set on line 7 I had it set to say 'sheet' instead of 'sheets' and was throwing back this error, and now it works. Hope that helps.
Very good video and nice work. Thanks a lot.
thank you for the kind words! i’m glad you found the video helpful
I use Col1, Col2, Col3,.... instead of using A, B, C,... Which one would you recommend ? (Once I had a unsolved problem with using A, B, C in Select statement.)
in most cases, i use the column letters (A, B, C) bc it makes it easier to look at the range and identify the columns i need. for example, if i want Column AK, BZ, D, it’s much easier for me to say “SELECT AK, BZ, D” bc i don’t know the numbers off the top of my head. I do use Column numbers but my default is letters. you should use whatever you like best (assuming the example above is something you’re comfortable managing - if it arises)
@@mattbrigidi hi , usually when you do things within the same sheet you can use A,B,C,D etc, , but when you do it on another file Col1, Col2, Col3 is used.
Hello thank you for this tutorial! Is it possible to get a copy of your code?
i have not found an effective way to share the code unfortunately - i’ll update this thread when i do
Hi Matt, Is there a script for moving any new files that appear in Drive to a folder (e.g.) Inbox so they can be sorted as part of a daily review
hey! great question - i look into this a bit and i think i found a way. good news: it seems pretty straightforward tho there is one extraneous thing (not painful) bad news: i won’t have a chance to record something bc great news: my wife and i just had our first child so im in full dad mode for a bit (so many diapers; so little sleep) i pre-recorded a bunch of courses and one of the lesson plans (coming in april or may of 2025) focuses on drive with that said, feel free to email me and i can send you what i have if you’d like
@@mattbrigidi Ohhhh!....Congratulations to the three of you!....that's wonderful news. Yeah, I think it would be a pretty handing thing and certainly ties in with how I personally use Drive. I'll shoot you that email....no hurry with the reply...enjoy the new addition to the family.
This was such a lifesaver thank you so so much for making this video. Very easy to follow and I would say i'm a beginner!
i’m glad to hear that!
I try to copy your code sir but it returns an error stating 'e:undefined' and soon when I call 'e' e.g. 'e.source'. Hope to get some answer from you sir. Thank you so much in advance.
hello! the issue is bc the input - “e” - is not defined. it will be defined when an edit is made (that’s why the letter “e” is used). if you try to run the function in the editor, then there is no edit input to pass to “e”. that results in “e” not being defined and the undefined error message to arise
Every one of the tutorials I found talks about how to read from a Google Sheets file, I can't find anything talking about a Google Document. I think a lot of this would apply, but a specific focus on doing that would be useful. (Great tutorial btw, I learned quite a bit here despite not needing to know how to read from any of these formats)
Interesting - so you’re looking to extract data from a Google Document? is it from the body or from tables in the document?
Is there a way to track who the task was assigned to, or completed by? We assign tasks using comments, but this doesn't display the person's name in the field.
hey - i’ve never tried to use comments as data inputs. i believe there are apps script functions to get comments. my opinion (without looking into it) is that comments would be a difficult way to track. ideally, a column would exist for assignment. let me know what you’re thinking and i’d be happy to chat it out with you
Thanks for this video! It was so helpful! The only issue I ran into was that I couldn't find the Slack channel I wanted to add the app to in my list of available channels. Any thoughts on how to fix that?
I'm glad you found the video helpful! I'm not sure why the channel would not be showing up, so this is just a guess: is the channel private?
@@mattbrigidi Yes the channel is private. I read somewhere about adding the bot associated with the app to the channel. Though I haven't tried it yet.
Awesome video Matt, thank you. I need this but I also need to put the "paragraphs" in a specific part of the document where I had a "Placeholder" for these. do you have a video for this? or How should I use write it?
Closing the loop here: I added a comment to your other comment. Feel free to email me your materials and I'll gladly take a look!
great video Matt!! I have a question, if I have a template and I need to add this text but in a specific part of the document, what types of consideration should I need to be aware?
Thank you! It depends on your preference. If you want to use a template, then you might want to use a replace method (I don't have a video for this). You could also recreate your template in Apps Script. If you want to send me an email with a copy of your sheet/doc template then I'd be happy to review and provide a recommendation
Is there a way to do this, but to a specific location in a doc template? I have the doc template made, it makes a copy of the template, and adds values into specific locations, but I cant figure out how to add the dynamic table into a specific location. Any tips?
wanna send me an email and i can take a look? my email is in my about section. if not, then i can do a little workshop and see if i come up with anything
How do you send an email if there is no email column on the spreadsheet? I have the setting set to verified, not user input - to make it easier for the person filling in the form, but this seems to make retrieving the email more difficult within the apps script
is there a place where the email exists? and can it be joined to the user input?
Not where I could see. It seems using the verified method instead of user input makes it unable to detect the email address despite it technically being part of the submission on the Google forms end. I ended up adding the field and managed to get it to work. I was just trying to create less friction for the user when completing the form by using the verified method instead. Ah well..
Just realized I replied with a different TH-cam account. I'm the same person! 😂
Amazing video! Thank you! One note to benefit the community, regarding minute 50:18, Flavor /"Lattice": From chatGPT 🙏: 1. Lattice Method ("lattice"): How It Works: The lattice method works by looking for lines in the PDF that form the boundaries of tables. It searches for the structure of tables by identifying the lines that make up the rows and columns. This is effective when the tables in the PDF have clear borders or gridlines, as it can accurately detect the cells within the table. Best Used For: PDFs where tables are well-defined with visible lines or borders. Default Choice: The lattice method is the default because it's generally more reliable for extracting tables that are neatly formatted with gridlines. 2. Stream Method ("stream"): How It Works: The stream method, on the other hand, doesn't rely on borders or gridlines. Instead, it looks for text that is aligned in a tabular format. It tries to infer the table structure based on the relative positions of the text in the PDF. This method can be useful when the tables don't have clear borders but still have a consistent layout. Best Used For: PDFs where tables are not clearly defined with lines but are instead organized with spacing or alignment. Why Choose One Over the Other? Lattice: Use this when your PDF has tables with clear, visible lines or borders. It is often more accurate for these types of documents. Stream: Use this when your PDF has tables without clear borders, relying more on the alignment of text.
Thank you for this video, Matt. I watched the entire thing and was able to generally understand. The only concern/help I have is that I thought this script would copy all tabs in addition to the working tab. Is there an easy way to add that into the script such that the new workbook created also includes the other tabs in the original workbook? Thanks again!
I'm glad you found it helpful - I'm sorry it didn't fully provide you with what you need. I don't believe I have a video on this (maybe I do and I've forgotten) but you could use the .getSheets() method, which will extract every sheet in the workbook. This would be a less stable solution bc you would need to have the same number of sheets in all your workbooks. The way I would probably approach this is to: 1. get the sheet id number for every sheet you want to extract data from and save them to a variable Example: var sheet_id_1 = 0; var sheet_id_2 = 1234567; 2. create a two-dimensional array with the sheet ID variables Example: var array2d = [[sheet_id_1, sheet_id_2]]; 3. loop through the array2d using the getSheetById method this way you would have access points to extract data
The function already delete by default sir, are any other way sir?
sorry to hear you're having problems - can you provide more information about the issue and I'll do my best to help
Perfeito! excelente aula. Parabéns.
thank you!
Great video, learned a lot. Thank you Have a question: Can we create documents with tables, separated by a line?
Thank you! I'm glad to hear it. I'm sure you can - what kind of layout do you have in mind? table 1 *insert line* table 2 *inset line* ?