Sheets Ninja

Sheets Ninja

Google Sheets, now just a little more magical! Google Sheets & Google Apps Script tutorials to help make your life easier and your Google Sheets feel a little less like a chore and a little more magical.

Basic Guide to Pivot Tables

Basic Guide to Pivot Tables

Пікірлер

  • @user-sm1eq3xu4b
    @user-sm1eq3xu4b17 сағат бұрын

    Great video! But when I executed it, I got this message in the mail: TypeError: Cannot read properties of undefined (reading 'getColumn') What is the problem?

  • @SheetsNinja
    @SheetsNinja15 сағат бұрын

    So it looks like you have a typo wherever you have .getColumn() in the script. Do you have something like this in the script? let range = e.range; let col = range.getColumn();

  • @DanDoormouse
    @DanDoormouse22 сағат бұрын

    Thank you! Great instruction

  • @SheetsNinja
    @SheetsNinja22 сағат бұрын

    Awesome! So glad this was helpful!

  • @rangetobleed
    @rangetobleedКүн бұрын

    Maybe a stupid question, but if I share this document to another person, will it run this function on theirs?

  • @SheetsNinja
    @SheetsNinjaКүн бұрын

    I just made another video with a simpler version of this script that doesn't require authorization--meaning it will automatically work for anyone who opens the Google Sheet: kzread.info/dash/bejne/m2GlxpqviLjVdaQ.html

  • @MichelNabil
    @MichelNabilКүн бұрын

    Great tutorial I was waiting for this one for a while How to transfer form data to a sheet But does this method keeps the format of the column at the database?

  • @SolomonTetteh-ot7ww
    @SolomonTetteh-ot7ww2 күн бұрын

    This video just saved me alot of stress.. Thank you.. I have liked and subscribed😊

  • @SheetsNinja
    @SheetsNinja2 күн бұрын

    Awesome! Thank you!

  • @kimdongryeong8331
    @kimdongryeong83313 күн бұрын

    Thanks for your great tutorial! It's really helpful! By the way it doesn't work on Android phones, right? What can we do for Android phones?

  • @SheetsNinja
    @SheetsNinja2 күн бұрын

    I just made a new version of this video using an onEdit script, which makes this functionality available for mobile phones or tablets: kzread.info/dash/bejne/fWmpsbWCZcyefag.html

  • @achmdalfy7157
    @achmdalfy71573 күн бұрын

    I love you bro... very muchhhh😂😂😂

  • @SheetsNinja
    @SheetsNinja3 күн бұрын

    I'd hate to be your coworker at the moment! 😉

  • @SandeshParsad
    @SandeshParsad4 күн бұрын

    Hi - thanks for this video. Is there any way you can automate messages? I want a team member to receive the messages from fiverr and respond back without sharing the fiverr id and password. Is that possible, if yes, how?

  • @SheetsNinja
    @SheetsNinja4 күн бұрын

    I don't think there's a way to reply to Fiverr messages without logging into Fiverr. You could potentially set up a way to forward the body of Fiverr emails but that still wouldn't give your team member to reply to the email directly

  • @cristianomoniz
    @cristianomoniz5 күн бұрын

    Hands down! Super Ninja......only a few steps now I have a free tool to apply in my daily pro life. I REALLY APPRECIATE IT!

  • @SheetsNinja
    @SheetsNinja5 күн бұрын

    Awesome! So glad this was helpful!

  • @DathyGonzales
    @DathyGonzales6 күн бұрын

    Hi do you also have P&L for many store branch and with one master file

  • @SheetsNinja
    @SheetsNinja4 күн бұрын

    Hey, so you can search for my video on importrange and that shows you how to take data from one Google Sheets and display it in another so you can combine or compare.

  • @DathyGonzales
    @DathyGonzales6 күн бұрын

    Hi! do you have also bookkeeping video's?

  • @SheetsNinja
    @SheetsNinja4 күн бұрын

    Hey, sorry, I'm not a bookkeeper so I don't have any specific for bookkeeping.

  • @DathyGonzales
    @DathyGonzales6 күн бұрын

    Hi! i don't have any accounting experience but my boss is asking me to do a report with P&L and I've been searching for a guideline that led me to you video. thank you

  • @SheetsNinja
    @SheetsNinja4 күн бұрын

    Awesome, so glad this was helpful!

  • @reyespaul
    @reyespaul7 күн бұрын

    is there a way to select multiple names at once on google forms?

  • @SheetsNinja
    @SheetsNinja6 күн бұрын

    You can use checkboxes to select multiple items or names in Google Forms.

  • @dirtdazerally6579
    @dirtdazerally65797 күн бұрын

    Hello. Thank you for this video. Update: Your script DOES run great. Thank you. There was a huge (1/2 hour or more) delay in it starting to work on my sheet, which is why I thought it didn't work. But, viola, it suddenly started worked much to my surprise. Thank you.

  • @SheetsNinja
    @SheetsNinja7 күн бұрын

    So this script isn't meant to run from the script editor, the onEdit trigger runs whenever the Google Sheet is modified. So if you make an edit in the Google sheet, it should run successfully.

  • @dirtdazerally6579
    @dirtdazerally65797 күн бұрын

    @@SheetsNinja Wow, thank you for the quick reply. When I go to the sheet and make an edit, the updated field remains blank. Would it make any difference if the sheet has multiple tabs, as mine does? Thank you again for this help. I really appreciate it.

  • @antonellogenco7821
    @antonellogenco78218 күн бұрын

    Ciao, molto utile il video, grazie. Ho una domanda, questa funzione "sostituisce" la funzione nativa della condivisione del file?

  • @SheetsNinja
    @SheetsNinja8 күн бұрын

    I'm not sure what you mean by substituting or replacing the native function. You can use this method instead of the native sharing function, or you can use it alongside the native sharing. It does not disable the share button, and you can still manage access completely separately from this method. The script only adds or removes emails in the tab, so it won't affect anything if you have separately added other people to the Google Sheet.

  • @antonellogenco7821
    @antonellogenco78217 күн бұрын

    @@SheetsNinja Ok, thanks. All clear, thank you very much for your work, the videos are very helpful!

  • @helenat7468
    @helenat74688 күн бұрын

    What should I do if I want to show present and absent? Thank you for your kind help.

  • @SheetsNinja
    @SheetsNinja8 күн бұрын

    If you want to show "Present" or "Absent" instead of a number, all you have to do is where it currently has a countifs to count if they show up on a day, you can put that into an if statement. E.g.: =IF(countifs('Form Responses 1'!$B:$B,$C7,'Form Responses 1'!$A:$A,">="&D$6,'Form Responses 1'!$A:$A,"<"&D$6+1)=1,"Present,"Absent") So basically if it finds that name on a certain day, it returns "Present", otherwise "Absent".

  • @helenat7468
    @helenat74686 күн бұрын

    @@SheetsNinja I was trying to freeze up to column C for easier scrolling, but I continue to get error message saying merged cells. Could you please help. Thanks so much

  • @SheetsNinja
    @SheetsNinja6 күн бұрын

    @@helenat7468 This one is a little confusing, but you can't freeze columns or rows if you have any merged cells that merge across where you want to freeze. So for example, on your sheet, you have one or more cells that are merged starting in A, B, or C and going to D or beyond. You'll just have to look through and unmerge any rows that do that so you can freeze where you need to

  • @BraveHeart-ht8zf
    @BraveHeart-ht8zf8 күн бұрын

    very helpfull

  • @SheetsNinja
    @SheetsNinja8 күн бұрын

    Awesome! So glad this was helpful!

  • @Carlie-d2w
    @Carlie-d2w9 күн бұрын

    This is great! What do I need to remove if I don't want any data from the columns pulling into the email, just the notification email sent?

  • @SheetsNinja
    @SheetsNinja9 күн бұрын

    You can just type what you want in the htmlBody part of the sendEmail section, and don't need to include any of the template literals: ${}

  • @braxtonwilkerson6165
    @braxtonwilkerson616510 күн бұрын

    I realize I'm super late to the video on this one but I am hoping you can help me, I've tried fixing it myself and I've tried looking through other comments but I cannot find my specific issue / need. I just need a single column to make updates to the timestamp. I want changes I make in col 2 to put a timestamp in col 5 and I want it to ignore col 1,3,4, and anything over 5. Please and thank you for any assistance you might provide.

  • @SheetsNinja
    @SheetsNinja10 күн бұрын

    All you need to do is put "col == 2" in the if statement. So something like this: if (col == 2) { sheet.getRange(row,5).set value(today); }

  • @braxtonwilkerson6165
    @braxtonwilkerson616510 күн бұрын

    @@SheetsNinja sorry I'm terrible at all this, would I still need to specify that it's sheet1 somewhere? Or do I just replace the entire if statement with what you said

  • @braxtonwilkerson6165
    @braxtonwilkerson616510 күн бұрын

    @@zackreynolds thank you that worked. I thought that might work before but I didn't do == in my troubleshooting I only did =

  • @SheetsNinja
    @SheetsNinja10 күн бұрын

    So in the example if statement, I exclude a column with "col != 12", so if you just replace that with "col == 2" then it will work the way you're hoping.

  • @braxtonwilkerson6165
    @braxtonwilkerson616510 күн бұрын

    @@SheetsNinja thank you so much for the help!

  • @everspader
    @everspader11 күн бұрын

    Really good method. However, I noticed that if I add a row in the middle of the table, all the dropdown validations are shifted. E.g say I added a row 20, then the dropdown datavalidation will be looking at the dropdown sheet at row 19.

  • @SheetsNinja
    @SheetsNinja11 күн бұрын

    Yes, unfortunately with this hack, it does mess it up if you add new rows in the sheet. The only way to compensate for this is going to a scripted method. Good news is I have a great tutorial on a couple ways to do that here: kzread.info/dash/bejne/Z42t1dhmgdLbhLQ.html

  • @JosephJericoMarino
    @JosephJericoMarino11 күн бұрын

    I have an error, the let range = e.range; TypeError: Cannot read properties of undefined (reading 'range')

  • @SheetsNinja
    @SheetsNinja11 күн бұрын

    That will happen when you authorize the script, because the onEdit is designed to run when the spreadsheet is edited and then "e" will contain info about the edit event that caused it to run. So the script should run now if you make an edit in the Google Sheet.

  • @GraemeStewart-k9w
    @GraemeStewart-k9w16 күн бұрын

    Thank you for the video. Is there a way to return the edited cells range with an onEdit(e) trigger when a filter is applied to the sheet?

  • @monikagope6690
    @monikagope669017 күн бұрын

    Thankyou so so so muchh...for the video. +1 subscriber. You have our heart🎉❤

  • @SheetsNinja
    @SheetsNinja17 күн бұрын

    Awesome! So glad this video was helpful!

  • @ravicharan3627
    @ravicharan362718 күн бұрын

    bro how can i make exact replica of this temple on my own ,, can you teach please,, or tell me how or where to learn

  • @SheetsNinja
    @SheetsNinja18 күн бұрын

    There is a link in the description to download this template.

  • @moussem
    @moussem28 күн бұрын

    Incredibly helpful! Similar to some comments here, I followed your exact method, deleted the data[0][0] line, my data is moved to the right tab but all my drop-down menus have been reset as just text. So I'm unable to select the next step after "prospects" because it's now just text. Can you please advise?

  • @SheetsNinja
    @SheetsNinja27 күн бұрын

    So what you'll want to do is set up the drop-down menus in any other tabs where you will be moving the data and then you will be ready to roll.

  • @moussem
    @moussem27 күн бұрын

    @@SheetsNinja I did just that and it worked. Duplicated the format of the first tab across all tabs. Thanks a lot!

  • @jawsstech
    @jawsstech28 күн бұрын

    subscriber count 2,150. I am going on record to state this is the beginning of your channel blowing up. Great content.

  • @SheetsNinja
    @SheetsNinja25 күн бұрын

    Thanks a million for the shoutout, you rock!

  • @dianayin9931
    @dianayin9931Ай бұрын

    Thank you for the video, it worked really well! Is there any way to keep one row out of the whole modified code, so it doesn't show its timestamp every time i change that row in specific?

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Yes, in the "if" parentheses, just add "&& row != 2" for example So it would be something like: If (sheetName == 'My Tab' && row != 2) { }

  • @kevinwankr
    @kevinwankrАй бұрын

    You are a google sheets wizard, thank you for help the community with your knowledge!

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    So glad this was helpful!

  • @MontBlackEcom
    @MontBlackEcomАй бұрын

    Great content keep doing it, please upload a new video for loss and profits google sheets. for amazon seller or ecommerce

  • @DarrenChen
    @DarrenChenАй бұрын

    This worked perfectly! Thanks!

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome, so glad this was helpful!

  • @wilkintelfo4746
    @wilkintelfo4746Ай бұрын

    Wow, thank you so much. You are amazing and a great teacher. Thank you.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome, so glad this was helpful!

  • @sandy-m2r
    @sandy-m2rАй бұрын

    Each employee is issued a laptop, two monitors and a docking station and we lease them. I need to track each computer by user and transfer ownership when someone quits, etc. I also need to track the lease end date so I can order new equipment for the ee. I cannot seem to find a way to create a data entry form with a search and report option. Do you have anything like that? I don’t need to track cost.

  • @EduardoRea-h9k
    @EduardoRea-h9kАй бұрын

    Thank you so much it worked, the only thing is that if I change de name of the first row it changes the cell LAst updaterd to the date, how can I do it so it doesnt change the first row

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    So all you have to add inside the IF statement paratheses is: && row > 1 So something like this: if (sheetName == 'Lead Management' && col == 12 && row > 1) { }

  • @EduardoRea-h9k
    @EduardoRea-h9kАй бұрын

    @@SheetsNinja thank you so much!

  • @whitneychesser5961
    @whitneychesser5961Ай бұрын

    You are going too fast!

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Sorry about that! If you're having trouble following along, here are two things that can help. 1) On the gear icon on the lower right of the video, turn the speed down to .75 or .5, and 2) Use the pause button!

  • @MichaelFemia
    @MichaelFemiaАй бұрын

    I hope I can get this work, but when I attempt to run the script I get an error: "This app is blocked This app tried to access sensitive info in your Google Account. To keep your account safe, Google blocked this access." Any ideas?

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Are you using a Google Account on a Workspace account? Sometimes on Workspace accounts, the admin has set it up to block any scripts and so that may be the case. A good way to test this is to try running this using a personal Google account.

  • @nataliakucys495
    @nataliakucys495Ай бұрын

    Can you do the same in Microsoft word?

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    I don't work in Microsoft Word, so not really sure what you're talking about here or if it's possible or not.

  • @MrJdorrington
    @MrJdorringtonАй бұрын

    I'm going with sheets simply cos we're in a spread of sheets. Thanks for the vids, btw.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome, so glad the video was helpful!

  • @abbyy00141
    @abbyy00141Ай бұрын

    Hi there! You videos are helpful! BUT Do you have a video about How to move a row to bottom of sheet when "Status" is changed to a value???

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    I have a similar video here: kzread.info/dash/bejne/en6g0tyApt3dY5M.html But instead of the finding section header, you could just change the target to: sheet.getRange(sheet.getLastRow()+1,1,1,data[0].length).setValues(data);

  • @abbyy00141
    @abbyy00141Ай бұрын

    @@SheetsNinja Thank you!

  • @videomonkpvr
    @videomonkpvrАй бұрын

    Much simpler than other video, great video. Wish you had more subs

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome, glad this was helpful!

  • @tdebone308
    @tdebone308Ай бұрын

    WHat adjustments to the formulas would need to be made to utilise KG and CM's??

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    I just updated the template with a 2nd version for KG/CM. A number of the formulas had to be converted to metric.

  • @shubhamsutar2
    @shubhamsutar2Ай бұрын

    Much needed video. Thanks a lot!

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome, so glad it was helpful!

  • @chakablazy
    @chakablazyАй бұрын

    Hello. Thank you so much. I am trying to implement something like this and always hits the wall. In my scenario, I want sheets to get user email in cell A2, date and time stamp in cell B2 for a corresponding edit in the same row from E2 to H2. This should continue on per row basis. Please assist.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    So you can't get the user email unless everyone authorizes the script. If you do have everyone authorize the script, then you can do: let email = Session.getActiveUser().getEmail() And then if you only want it to run for edits in E to H, then in the script, you would want to put this around the rest of the script (below the main variables like .getRow() and .getCol() ) If (col >= 5 && col <= 8) { // Rest of script here } If

  • @tianolamas7832
    @tianolamas7832Ай бұрын

    Hi, I use this code but it doesn’t keep the format between the tabs. Is there a code line that I should add besides “Rich Text Value” ex, it copies hyperlink but it has black letters instead of the blue letters underlined

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    You can copy formats as well, but the method is a lot more complicated. It's something like: sheet.getRange(row,col,numRows,numCols).copyFormatToRange(targetSheetId, startRow,endRow,startCol,endRow)

  • @user-ey4ry3te3b
    @user-ey4ry3te3bАй бұрын

    Great Tutorial and it helped a lot. I have a request when i delete the data in column A, B column is not cleared automatically. Do you have a way to improve it? thanks.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    The only way you can automatically clear cells would be using the scripted version of this. I have a tutorial on that here: kzread.info/dash/bejne/Z42t1dhmgdLbhLQ.html

  • @thefaraon6079
    @thefaraon6079Ай бұрын

    hey i get the exception that my parameters for the getrange function are (number,number,number,null)

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    It sounds like you might need to update the range where the script is getting the data. If it's saying the last one is null then the script is likely not getting any data. If your "FORM" tab looks different than the FORM tab in the template, you will want to modify the range where it's getting the data. That is this line: let data = form.getRange(5,5,form.getLastRow()-4,1).getValues().flat(); This assumes that the data entry is starting in E5. If you are starting in B2, then you would need to modify to: let data = form.getRange(2,2,form.getLastRow()-1,1).getValues().flat();

  • @romand.lopeztovar552
    @romand.lopeztovar552Ай бұрын

    This is awesome, thanks!!!!

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Just doing my job of spreading awesomeness! Stay tuned for more!

  • @justinchester753
    @justinchester753Ай бұрын

    Is there a way I can add in two scripts that is looking at criteria in two different columns? Meaning I move row 1 to its selected tab first. Then based off of the criteria I select in Column 2 it'll move to its corresponding tab as well.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    You can nest if statements if you want multiple criteria... something like this: if (val == 'tab name') { let column2Text = sheet.getRange(row,2).getValue(); let data = sheet.getRange(row,1,1,10).getValues(); let targetTab = ss.getSheetByName(val); targetTab.appendRow(data[0]); if (column2Text == 'tab 2 name') { // copy row to other tab as well let sheet2 = ss.getSheetByName("tab2"); sheet2.appendRow(data[0]); } } If you notice, the ending bracket for the first if statement is OUTSIDE of the second if statement. This is how you nest them, which allows you to do something if the first condition is true, but have a nested action that only applies if something else if the case.

  • @eunofosua
    @eunofosuaАй бұрын

    This was very helpful. Thank you.

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    Awesome! So glad this was helpful!

  • @YeniferMezquita
    @YeniferMezquitaАй бұрын

    Can't get it to work - Not sure why. This is my script: /* @OnlycurrentDoc */ function onEdit(e){ let range = e.range; let col = range.getColumn(); let row = range.getRow(); let val = range.getValue(); let source = e.source.getActiveSheet(); if (col == 1 && val != ''){ let ss = Spreadsheet.getActiveSheet(); let sheet = ss.getSheetByName(source.getName()); let targetSheet = ss.getSheetByName(val); let data = sheet.getRange(row,1,1,sheet.getLastColumn()).getValue(); targetSheet.appendRow(data[0]); sheet.deleteRow(row); } }

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    A couple of reasons why this could be... Is your drop-down in column A? And do the drop-down options match the tab names exactly? And finally, did you authorize the script?

  • @THOLOGHANZI
    @THOLOGHANZIАй бұрын

    Thank you so much for this video. I do have a question - how will I use this App script on a google sheet that have protected ranges in it? Will it still work?

  • @SheetsNinja
    @SheetsNinjaАй бұрын

    If there are protected ranges that are warning only, this will still work. If it prevents people from editing, then you will need to make sure you use an installed trigger and that the user who installs the trigger has edit access everywhere the script will need access.