Bird
Raised Fist0
Google Sheetsspreadsheet~8 mins

IMPORTXML for structured data in Google Sheets - Dashboard Guide

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
Dashboard Mode - IMPORTXML for structured data
Dashboard Goal

Track the latest headlines and their publication dates from a news website using IMPORTXML to fetch structured data automatically.

Sample Data
HeadlinePublication Date
Global Markets Rally on Economic Optimism2024-06-10
New Tech Innovations Unveiled at Conference2024-06-09
Climate Change Summit Reaches Agreement2024-06-08
Sports Championship Finals Scheduled for July2024-06-07
Healthcare Advances Improve Patient Outcomes2024-06-06
Dashboard Components
  • KPI Card: Total Headlines
    Formula: =COUNTA(A2:A6)
    Shows the number of headlines fetched.
  • Table: Headlines and Dates
    Formulas:
    =IMPORTXML("https://example-news-site.com", "//h2[@class='headline']") in A2
    =IMPORTXML("https://example-news-site.com", "//time[@class='pubdate']/@datetime") in B2
    Displays headlines and their publication dates fetched live.
  • Latest Headline: Most Recent News
    Formula: =INDEX(A2:A6, MATCH(MAX(B2:B6), B2:B6, 0))
    Shows the headline with the newest publication date.
Dashboard Layout
+----------------------+-------------------------+
| Total Headlines (KPI) | Latest Headline (KPI)   |
+----------------------+-------------------------+
|                                          |
|           Headlines and Dates Table       |
|                                          |
+------------------------------------------+
Interactivity

Add a date filter to select a range of publication dates. When the filter changes, the Headlines and Dates Table updates to show only news within that range. The Total Headlines and Latest Headline KPIs update automatically based on the filtered data.

Self Check

If you add a filter to show only headlines published after 2024-06-08, which headlines remain visible? How do the Total Headlines and Latest Headline KPIs update?

Key Result
Dashboard fetches and shows latest news headlines and dates using IMPORTXML with KPIs for total and latest headline.

Practice

(1/5)
1. What does the IMPORTXML function do in Google Sheets?
easy
A. It fetches data from a web page using a URL and XPath query.
B. It imports data from another Google Sheet only.
C. It creates charts based on web data automatically.
D. It exports your sheet data to a web page.

Solution

  1. Step 1: Understand IMPORTXML purpose

    IMPORTXML is designed to pull data from web pages by using a URL and an XPath query to specify what data to extract.
  2. Step 2: Compare options

    Only "It fetches data from a web page using a URL and XPath query." correctly describes this function. The other options describe unrelated features.
  3. Final Answer:

    It fetches data from a web page using a URL and XPath query. -> Option A
  4. Quick Check:

    IMPORTXML = fetch web data [OK]
Hint: IMPORTXML grabs web data using URL + XPath [OK]
Common Mistakes:
  • Thinking IMPORTXML only works with other sheets
  • Confusing IMPORTXML with chart creation
  • Assuming it exports data instead of importing
2. Which of these is the correct syntax for using IMPORTXML to get all <h2> elements from a webpage URL in cell A1?
easy
A. =IMPORTXML(A1, "//h2/@text")
B. =IMPORTXML(A1, "//h2[]")
C. =IMPORTXML(A1, "h2")
D. =IMPORTXML(A1, "//h2")

Solution

  1. Step 1: Recall IMPORTXML syntax

    The function takes two arguments: a URL and an XPath query. To select all <h2> elements, the XPath is "//h2".
  2. Step 2: Evaluate options

    =IMPORTXML(A1, "//h2") uses correct XPath syntax. =IMPORTXML(A1, "//h2[]") has invalid brackets. =IMPORTXML(A1, "h2") misses the XPath axis. =IMPORTXML(A1, "//h2/@text") tries to get an attribute "text" which doesn't exist.
  3. Final Answer:

    =IMPORTXML(A1, "//h2") -> Option D
  4. Quick Check:

    Correct XPath syntax = =IMPORTXML(A1, "//h2") [OK]
Hint: Use double slashes and tag name for XPath [OK]
Common Mistakes:
  • Adding brackets [] incorrectly in XPath
  • Omitting // in XPath
  • Trying to get text as attribute with @text
3. Given the formula =IMPORTXML("https://example.com", "//ul/li"), what will the output be?
medium
A. All paragraphs (<p>) from the page.
B. Only the first list item from the page.
C. All list items (<li>) inside unordered lists (<ul>) from the page.
D. An error because XPath is invalid.

Solution

  1. Step 1: Understand the XPath query

    The XPath "//ul/li" selects all
  2. elements that are children of any <ul> element on the page.
  3. Step 2: Predict IMPORTXML output

    IMPORTXML will return all matching list items, not just the first, and it won't return paragraphs or error since XPath is valid.
  4. Final Answer:

    All list items (
  5. ) inside unordered lists (<ul>) from the page.
  6. -> Option C
  7. Quick Check:

    XPath selects all matching nodes = All list items (
  8. ) inside unordered lists (<ul>) from the page. [OK]
Hint: XPath //ul/li selects all list items under ul [OK]
Common Mistakes:
  • Assuming only first match is returned
  • Confusing <li> with <p> tags
  • Thinking XPath syntax is wrong here
4. You wrote =IMPORTXML("https://example.com", "//div[@class='price']") but get a #N/A error. What is the likely problem?
medium
A. The URL is invalid or unreachable.
B. The XPath syntax for class attribute is incorrect.
C. IMPORTXML does not support attribute filters.
D. You must use single quotes inside the XPath instead of double quotes.

Solution

  1. Step 1: Check XPath syntax

    The XPath "//div[@class='price']" is correct for selecting divs with class 'price'.
  2. Step 2: Consider other causes of #N/A

    #N/A often means the URL is unreachable or blocked. IMPORTXML supports attribute filters and double quotes inside XPath strings are allowed if escaped properly.
  3. Final Answer:

    The URL is invalid or unreachable. -> Option A
  4. Quick Check:

    #N/A often means URL problem [OK]
Hint: Check URL accessibility if #N/A error occurs [OK]
Common Mistakes:
  • Assuming XPath syntax is wrong when it's correct
  • Not verifying the URL is accessible
  • Thinking IMPORTXML can't filter by attributes
5. You want to import the latest news headlines from https://news.example.com where headlines are in <h3 class='headline'> tags. Which formula correctly imports only the text of these headlines?
hard
A. =IMPORTXML("https://news.example.com", "//h3[@class='headline']")
B. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()")
C. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/@text")
D. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/innerText")

Solution

  1. Step 1: Understand XPath to get text content

    To get only the text inside elements, use the XPath function /text() after selecting the element.
  2. Step 2: Evaluate options

    =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()") correctly uses /text(). =IMPORTXML("https://news.example.com", "//h3[@class='headline']") returns the whole element including tags. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/@text") tries to get an attribute 'text' which doesn't exist. =IMPORTXML("https://news.example.com", "//h3[@class='headline']/innerText") uses invalid XPath syntax.
  3. Final Answer:

    =IMPORTXML("https://news.example.com", "//h3[@class='headline']/text()") -> Option B
  4. Quick Check:

    Use /text() to get element text [OK]
Hint: Add /text() to XPath to get only text content [OK]
Common Mistakes:
  • Omitting /text() and getting full HTML tags
  • Using @text which is not an attribute
  • Trying invalid XPath like innerText