n8n workflow: Automated Web Scraping: email a CSV, save to Google Sheets & Microsoft Excel

Nodes:
name: When clicking "Test workflow"
type: n8n-nodes-base.manualTrigger
name: Split Out
type: n8n-nodes-base.splitOut
parameters: fieldToSplitOut: books
name: Convert to CSV File
type: n8n-nodes-base.convertToFile
name: Sticky Note
type: n8n-nodes-base.stickyNote
parameters: height: 184.90255200662574
content: ### You need to setup Microsoft Azure credentials with Microsoft Graph permissions.
name: Sticky Note1
type: n8n-nodes-base.stickyNote
parameters: height: 183.1237982918667
content: ### Unlike Google Sheets where we did not need to have a certain format, here we need to create the column headers, otherwise the appending to the sheet won't work.
name: Sticky Note2
type: n8n-nodes-base.stickyNote
parameters: height: 135.09744799337426
content: ### For these steps to work you will need to have Drive, Sheets and Gmail APIs enabled in your Google Cloud Account
name: Extract all books from the page
type: n8n-nodes-base.html
parameters: operation: extractHtmlContent
extractionValues: values: key: books
cssSelector: .row > li
returnArray: yes
returnValue: html
name: Sort by price
type: n8n-nodes-base.sort
parameters: sortFieldsUi: sortField: price
name: Extract individual book price
type: n8n-nodes-base.html
parameters: operation: extractHtmlContent
dataPropertyName: books
extractionValues: values: key: title
attribute: title
cssSelector: h3 > a
returnValue: attribute
key: price
cssSelector: .price_color
name: Save to Google Sheets
type: n8n-nodes-base.googleSheets
parameters: columns: schema: type: string
display: yes
removed: no
required: no
displayName: title
defaultMatch: no
canBeUsedToMatch: yes
type: string
display: yes
removed: no
required: no
displayName: price
defaultMatch: no
canBeUsedToMatch: yes
mappingMode: autoMapInputData
operation: append
sheetName: __rl: yes
mode: list
value: gid=0
cachedResultUrl: https://docs.google.com/spreadsheets/d/1zyiRT7iIlfzZiskC9vDVoAFnW_UNMVXX0-ESVU1yYxY/edit#gid=0
cachedResultName: Sheet1
documentId: __rl: yes
mode: list
value: 1zyiRT7iIlfzZiskC9vDVoAFnW_UNMVXX0-ESVU1yYxY
cachedResultUrl: https://docs.google.com/spreadsheets/d/1zyiRT7iIlfzZiskC9vDVoAFnW_UNMVXX0-ESVU1yYxY/edit?usp=drivesdk
cachedResultName: Scraped Data
name: Save to Microsoft Excel 365
type: n8n-nodes-base.microsoftExcel
parameters: dataMode: autoMap
resource: worksheet
workbook: __rl: yes
mode: id
value: =EA8A73F11507ECE9!24392
operation: append
worksheet: __rl: yes
mode: list
value: {00000000-0001-0000-0000-000000000000}
cachedResultName: Sheet1
name: Send CSV via e-mail
type: n8n-nodes-base.gmail
parameters: sendTo: constact@mihai.ltd
message: Hey, here's the scraped data from the online bookstore!
subject: bookstore csv
name: Fetch website content
type: n8n-nodes-base.httpRequest
parameters: url: http://books.toscrape.com
options: allowUnauthorizedCerts: yes
name: Sticky Note3
type: n8n-nodes-base.stickyNote
parameters: width: 579
height: 297
content: ## Automated Web Scraping: email a CSV, save to Google Sheets & Microsoft Excel

Set-up steps:
1. Change the website to scrape in the "Fetch website content" node
2. Configure Microsoft Azure credentials with Microsoft Graph permissions (required for the Save to Microsoft Excel 365 node)
3. Configure Google Cloud credentials with access to Google Drive, Google Sheets and Gmail APIs (the latter is required for the Send CSV via e-mail node).

Connections:
Split Out: main: node: Extract individual book price
type: main
Sort by price: main: node: Save to Microsoft Excel 365
type: main
node: Convert to CSV File
type: main
node: Save to Google Sheets
type: main
Convert to CSV File: main: node: Send CSV via e-mail
type: main
Fetch website content: main: node: Extract all books from the page
type: main
Extract individual book price: main: node: Sort by price
type: main
When clicking "Test workflow": main: node: Fetch website content
type: main
Extract all books from the page: main: node: Split Out
type: main