Bird
Raised Fist0
Google Sheetsspreadsheet~15 mins

Script editor overview in Google Sheets - Real Business Scenario

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Scenario Mode
👤 Your Role: You are a data analyst working with Google Sheets.
📋 Request: Your manager wants you to automate a task that adds a timestamp whenever a new entry is made in the sheet.
📊 Data: You have a Google Sheet with columns: Name, Task, and Timestamp. The Timestamp column is currently empty.
🎯 Deliverable: Create a simple script using the Google Sheets Script Editor that automatically fills the Timestamp column with the current date and time when a new row is added.
Progress0 / 3 steps
Sample Data
NameTaskTimestamp
AliceReport
BobAnalysis
CharliePresentation
1
Step 1: Open the Google Sheets file and go to Extensions > Apps Script to open the Script Editor.
No formula needed; just open the Script Editor.
Expected Result
The Script Editor window opens, ready for you to write code.
2
Step 2: In the Script Editor, write a function named onEdit that runs automatically when the sheet is edited.
function onEdit(e) { var sheet = e.source.getActiveSheet(); var range = e.range; if (range.getColumn() == 2 && range.getRow() > 1) { var timestampCell = sheet.getRange(range.getRow(), 3); timestampCell.setValue(new Date()); } }
Expected Result
The script is ready to add a timestamp in column 3 when column 2 is edited.
3
Step 3: Save the script and return to the Google Sheet. Now, when you enter or change a value in the Task column (column 2), the Timestamp column (column 3) will automatically fill with the current date and time.
No formula; just test by editing the sheet.
Expected Result
When you type a task in column 2, the timestamp appears in column 3 for that row.
Final Result
Name      | Task       | Timestamp           
--------------------------------------------
Alice     | Report     | 2024-06-01 10:15 AM 
Bob       | Analysis   | 2024-06-01 10:20 AM 
Charlie   | Presentation | 2024-06-01 10:25 AM
The Script Editor allows you to write scripts that automate tasks in Google Sheets.
The onEdit function runs automatically when the sheet is changed.
You can use the script to add timestamps automatically, saving manual work.
Bonus Challenge

Modify the script to only add a timestamp if the Task cell is not empty and to clear the timestamp if the Task cell is cleared.

Show Hint
Use an if-else statement inside the onEdit function to check if the edited cell is empty or not, then set or clear the timestamp accordingly.

Practice

(1/5)
1. What is the main purpose of the Script Editor in Google Sheets?
easy
A. To import data from other spreadsheets only
B. To write JavaScript code to customize and automate tasks in the spreadsheet
C. To format cells with colors and fonts
D. To create charts and graphs automatically

Solution

  1. Step 1: Understand the Script Editor's role

    The Script Editor allows writing JavaScript code to customize Google Sheets.
  2. Step 2: Identify the main use

    It is mainly used to automate tasks and add custom features, not just formatting or charting.
  3. Final Answer:

    To write JavaScript code to customize and automate tasks in the spreadsheet -> Option B
  4. Quick Check:

    Script Editor = JavaScript customization [OK]
Hint: Script Editor = write code to automate sheets [OK]
Common Mistakes:
  • Thinking Script Editor is for formatting only
  • Confusing it with chart tools
  • Believing it only imports data
2. Which of the following is the correct way to start a function in Google Sheets Script Editor?
easy
A. function myFunction() { }
B. def myFunction() { }
C. func myFunction() { }
D. function: myFunction() { }

Solution

  1. Step 1: Recall JavaScript function syntax

    Google Sheets scripts use JavaScript, where functions start with the keyword 'function'.
  2. Step 2: Match the correct syntax

    Only 'function myFunction() { }' matches JavaScript syntax correctly.
  3. Final Answer:

    function myFunction() { } -> Option A
  4. Quick Check:

    JavaScript function syntax = function name() { } [OK]
Hint: JavaScript functions start with 'function' keyword [OK]
Common Mistakes:
  • Using Python or other language syntax
  • Adding colons after function keyword
  • Using incorrect keywords like 'def' or 'func'
3. Given this script in the Script Editor:
function showAlert() {
  SpreadsheetApp.getUi().alert('Hello!');
}

What happens when you run showAlert()?
medium
A. An error occurs because alert is not a valid method
B. The message 'Hello!' is printed in the console only
C. Nothing happens because the function is empty
D. A popup alert with the message 'Hello!' appears in the spreadsheet

Solution

  1. Step 1: Understand the function code

    The function calls SpreadsheetApp.getUi().alert('Hello!'), which shows a popup alert in the spreadsheet UI.
  2. Step 2: Identify the effect of running the function

    Running showAlert() triggers the alert popup with the message 'Hello!'.
  3. Final Answer:

    A popup alert with the message 'Hello!' appears in the spreadsheet -> Option D
  4. Quick Check:

    alert() shows popup message [OK]
Hint: alert() shows popup in spreadsheet UI [OK]
Common Mistakes:
  • Thinking alert prints to console
  • Assuming function does nothing
  • Believing alert method is invalid
4. You wrote this script in the Script Editor:
function addNumbers() {
  var sum = 5 + ;
  Logger.log(sum);
}

What is the error and how do you fix it?
medium
A. Syntax error due to incomplete addition; fix by adding a number after '+'
B. Runtime error because Logger.log is not defined; fix by importing Logger
C. No error; script runs and logs 5
D. Syntax error because 'var' is not allowed; fix by removing 'var'

Solution

  1. Step 1: Identify the syntax error in the addition

    The expression '5 + ;' is incomplete and causes a syntax error because a number is missing after '+'.
  2. Step 2: Fix the error by completing the addition

    Add a number after '+' like '5 + 3' to fix the syntax error.
  3. Final Answer:

    Syntax error due to incomplete addition; fix by adding a number after '+' -> Option A
  4. Quick Check:

    Incomplete expression causes syntax error [OK]
Hint: Check for missing operands in math expressions [OK]
Common Mistakes:
  • Thinking Logger.log causes error
  • Assuming 'var' is invalid
  • Ignoring incomplete expression
5. You want to create a custom menu in Google Sheets using the Script Editor that runs a function named processData. Which script snippet correctly adds this menu when the spreadsheet opens?
hard
A. function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process') .addToUi(); }
B. function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process', processData) .addToUi(); }
C. function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process', 'processData') .addToUi(); }
D. function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process', 'processData()') .addToUi(); }

Solution

  1. Step 1: Understand how to add a custom menu

    The method addItem requires two arguments: the menu label as a string and the function name as a string without parentheses.
  2. Step 2: Identify the correct syntax

    function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process', 'processData') .addToUi(); } correctly passes 'processData' as a string and chains the calls properly.
  3. Final Answer:

    function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Custom Menu') .addItem('Run Process', 'processData') .addToUi(); } -> Option C
  4. Quick Check:

    addItem needs function name as string [OK]
Hint: Pass function name as string in addItem [OK]
Common Mistakes:
  • Passing function reference without quotes
  • Including parentheses in function name string
  • Omitting second argument in addItem