mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
refactor(Google Sheets Node): Prevent reporting to Sentry failure to find spreadsheet (no-changelog) (#7518)
To silence this very frequently reported error: https://n8nio.sentry.io/issues/3823103947/?project=4503924908883968&query=&referrer=issue-stream&statsPeriod=90d&stream_index=0
This commit is contained in:
parent
65e5593233
commit
d885daa6a1
|
@ -20,7 +20,11 @@ export async function router(this: IExecuteFunctions): Promise<INodeExecutionDat
|
|||
let results: INodeExecutionData[] | undefined;
|
||||
if (googleSheets.resource === 'sheet') {
|
||||
const { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;
|
||||
const spreadsheetId = getSpreadsheetId(mode as ResourceLocator, value as string);
|
||||
const spreadsheetId = getSpreadsheetId(
|
||||
this.getNode(),
|
||||
mode as ResourceLocator,
|
||||
value as string,
|
||||
);
|
||||
|
||||
const googleSheet = new GoogleSheet(spreadsheetId, this);
|
||||
|
||||
|
|
|
@ -4,6 +4,7 @@ import type {
|
|||
INodeExecutionData,
|
||||
INodeListSearchItems,
|
||||
INodePropertyOptions,
|
||||
INode,
|
||||
} from 'n8n-workflow';
|
||||
import { NodeOperationError } from 'n8n-workflow';
|
||||
import type { GoogleSheet } from './GoogleSheet';
|
||||
|
@ -18,10 +19,16 @@ import { ResourceLocatorUiNames, ROW_NUMBER } from './GoogleSheets.types';
|
|||
export const untilSheetSelected = { sheetName: [''] };
|
||||
|
||||
// Used to extract the ID from the URL
|
||||
export function getSpreadsheetId(documentIdType: ResourceLocator, value: string): string {
|
||||
export function getSpreadsheetId(
|
||||
node: INode,
|
||||
documentIdType: ResourceLocator,
|
||||
value: string,
|
||||
): string {
|
||||
if (!value) {
|
||||
throw new Error(
|
||||
throw new NodeOperationError(
|
||||
node,
|
||||
`Can not get sheet '${ResourceLocatorUiNames[documentIdType]}' with a value of '${value}'`,
|
||||
{ severity: 'warning' },
|
||||
);
|
||||
}
|
||||
if (documentIdType === 'url') {
|
||||
|
|
|
@ -52,7 +52,7 @@ export async function sheetsSearch(
|
|||
_filter?: string,
|
||||
): Promise<INodeListSearchResult> {
|
||||
const { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;
|
||||
const spreadsheetId = getSpreadsheetId(mode as ResourceLocator, value as string);
|
||||
const spreadsheetId = getSpreadsheetId(this.getNode(), mode as ResourceLocator, value as string);
|
||||
|
||||
const query = {
|
||||
fields: 'sheets.properties',
|
||||
|
|
|
@ -6,7 +6,7 @@ import type { ResourceLocator } from '../helpers/GoogleSheets.types';
|
|||
|
||||
export async function getSheets(this: ILoadOptionsFunctions): Promise<INodePropertyOptions[]> {
|
||||
const { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;
|
||||
const spreadsheetId = getSpreadsheetId(mode as ResourceLocator, value as string);
|
||||
const spreadsheetId = getSpreadsheetId(this.getNode(), mode as ResourceLocator, value as string);
|
||||
|
||||
const sheet = new GoogleSheet(spreadsheetId, this);
|
||||
const responseData = await sheet.spreadsheetGetSheets();
|
||||
|
@ -34,7 +34,7 @@ export async function getSheetHeaderRow(
|
|||
this: ILoadOptionsFunctions,
|
||||
): Promise<INodePropertyOptions[]> {
|
||||
const { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;
|
||||
const spreadsheetId = getSpreadsheetId(mode as ResourceLocator, value as string);
|
||||
const spreadsheetId = getSpreadsheetId(this.getNode(), mode as ResourceLocator, value as string);
|
||||
|
||||
const sheet = new GoogleSheet(spreadsheetId, this);
|
||||
let sheetWithinDocument = this.getNodeParameter('sheetName', undefined, {
|
||||
|
|
|
@ -12,7 +12,7 @@ export async function getMappingColumns(
|
|||
this: ILoadOptionsFunctions,
|
||||
): Promise<ResourceMapperFields> {
|
||||
const { mode, value } = this.getNodeParameter('documentId', 0) as IDataObject;
|
||||
const spreadsheetId = getSpreadsheetId(mode as ResourceLocator, value as string);
|
||||
const spreadsheetId = getSpreadsheetId(this.getNode(), mode as ResourceLocator, value as string);
|
||||
|
||||
const sheet = new GoogleSheet(spreadsheetId, this);
|
||||
let sheetWithinDocument = this.getNodeParameter('sheetName', undefined, {
|
||||
|
|
Loading…
Reference in a new issue