Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Google Sheet Sources/Triggers Improvements #11711

Merged
merged 13 commits into from
May 10, 2024
Merged
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-add-multiple-rows",
name: "Add Multiple Rows",
description: "Add multiple rows of data to a Google Sheet",
version: "0.2.4",
version: "0.2.5",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "google_sheets-add-single-row",
name: "Add Single Row",
description: "Add a single row of data to Google Sheets",
version: "2.1.5",
version: "2.1.6",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/clear-cell/clear-cell.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-clear-cell",
name: "Clear Cell",
description: "Delete the content of a specific cell in a spreadsheet",
version: "0.1.5",
version: "0.1.6",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/clear-row/clear-row.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-clear-row",
name: "Clear Row",
description: "Delete the content of a row in a spreadsheet. Deleted rows will appear as blank rows.",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-copy-worksheet",
name: "Copy Worksheet",
description: "Copy an existing worksheet to another Google Sheets file",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-create-column",
name: "Create Column",
description: "Create a new column in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-create-spreadsheet",
name: "Create Spreadsheet",
description: "Create a blank spreadsheet or duplicate an existing spreadsheet",
version: "0.1.4",
version: "0.1.5",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-create-worksheet",
name: "Create Worksheet",
description: "Create a blank worksheet with a title",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/delete-row/delete-row.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-delete-row",
name: "Delete Row",
description: "Deletes a specific row in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-delete-rows",
name: "Delete Rows",
description: "Deletes the specified rows from a spreadsheet. [See the documentation](https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/request#deletedimensionrequest)",
version: "0.0.3",
version: "0.0.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-delete-worksheet",
name: "Delete Worksheet",
description: "Delete a specific worksheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-find-row-vlookup",
name: "Find Row Vlookup",
description: "Find one or more rows by the first column value and a search text using [VLOOKUP](https://support.google.com/docs/answer/3093318) formula",
version: "0.0.2",
version: "0.0.3",
type: "action",
props: {
app,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/find-row/find-row.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-find-row",
name: "Find Row",
description: "Find one or more rows by a column and value",
version: "0.2.3",
version: "0.2.4",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/get-cell/get-cell.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-get-cell",
name: "Get Cell",
description: "Fetch the contents of a specific cell in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-get-spreadsheet-by-id",
name: "Get Spreadsheet by ID",
description: "Returns the spreadsheet at the given ID. [See the docs](https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/get) for more information",
version: "0.1.4",
version: "0.1.5",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-get-values-in-range",
name: "Get Values in Range",
description: "Get values from a range of cells using A1 notation.",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/get-values/get-values.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-get-values",
name: "Get Values",
description: "Get all values from a sheet.",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export default {
key: "google_sheets-insert-anchored-note",
name: "Insert an Anchored Note",
description: "Insert a note on a spreadsheet cell. [See the docs here](https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets/batchUpdate)",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
app,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-insert-comment",
name: "Insert Comment",
description: "Insert a comment into a spreadsheet. [See the docs here](https://developers.google.com/drive/api/v3/reference/comments/create)",
version: "0.1.4",
version: "0.1.5",
type: "action",
props: {
app,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-list-worksheets",
name: "List Worksheets",
description: "Get a list of all worksheets in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-update-cell",
name: "Update Cell",
description: "Update a cell in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/actions/update-row/update-row.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-update-row",
name: "Update Row",
description: "Update a row in a spreadsheet",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ export default {
key: "google_sheets-update-rows",
name: "Update Rows",
description: "Update multiple rows in a spreadsheet defined by a range",
version: "0.1.3",
version: "0.1.4",
type: "action",
props: {
googleSheets,
Expand Down
4 changes: 2 additions & 2 deletions components/google_sheets/actions/upsert-row/upsert-row.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { v4 as uuid } from "uuid";
import { VALUE_RENDER_OPTION } from "../../constants.mjs";
import { VALUE_RENDER_OPTION } from "../../common/constants.mjs";
import googleSheets from "../../google_sheets.app.mjs";
import {
omitEmptyKey, toSingleLineString,
Expand All @@ -21,7 +21,7 @@ export default {
key: "google_sheets-upsert-row",
name: "Upsert Row",
description: "Upsert a row of data in a Google Sheet",
version: "0.1.5",
version: "0.1.6",
type: "action",
props: {
googleSheets,
Expand Down
8 changes: 3 additions & 5 deletions components/google_sheets/google_sheets.app.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import sheets from "@googleapis/sheets";
import googleDrive from "../google_drive/google_drive.app.mjs";
import {
INSERT_DATA_OPTION, VALUE_INPUT_OPTION,
} from "./constants.mjs";
} from "./common/constants.mjs";
import isArray from "lodash/isArray.js";
import get from "lodash/get.js";
import isString from "lodash/isString.js";
Expand All @@ -22,8 +22,7 @@ export default {
cells: {
type: "string[]",
label: "Cells / Column Values",
description:
"Enter individual cell values or a custom expression to pass an array with each element representing a cell/column value.",
description: "Enter individual cell values or a custom expression to pass an array with each element representing a cell/column value.",
},
range: {
type: "string",
Expand All @@ -43,8 +42,7 @@ export default {
rows: {
type: "string",
label: "Row Values",
description:
"Provide an array of arrays. Each nested array should represent a row, with each element of the nested array representing a cell/column value (e.g., passing `[[\"Foo\",1,2],[\"Bar\",3,4]]` will insert two rows of data with three columns each). The most common pattern is to reference an array of arrays exported by a previous step (e.g., `{{steps.foo.$return_value}}`). You may also enter or construct a string that will `JSON.parse()` to an array of arrays.",
description: "Provide an array of arrays. Each nested array should represent a row, with each element of the nested array representing a cell/column value (e.g., passing `[[\"Foo\",1,2],[\"Bar\",3,4]]` will insert two rows of data with three columns each). The most common pattern is to reference an array of arrays exported by a previous step (e.g., `{{steps.foo.$return_value}}`). You may also enter or construct a string that will `JSON.parse()` to an array of arrays.",
},
sheetID: {
type: "string",
Expand Down
2 changes: 1 addition & 1 deletion components/google_sheets/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@pipedream/google_sheets",
"version": "0.7.2",
"version": "0.7.3",
"description": "Pipedream Google_sheets Components",
"main": "google_sheets.app.mjs",
"keywords": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ export default {
throw new Error("activateHook is not implemented");
},
processSpreadsheet() {
throw new Error("processEvent is not implemented");
throw new Error("processSpreadsheet is not implemented");
},
async renewSubscription() {
throw new Error("renewSubscription is not implemented");
Expand Down
30 changes: 20 additions & 10 deletions components/google_sheets/sources/common/new-row-added.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,15 @@ export default {
},
},
methods: {
getMeta(spreadsheet, worksheet, rowNumber, row) {
const { sheetId: worksheetId } = worksheet;
const { spreadsheetId: sheetId } = spreadsheet;
_getRowHashes() {
return this.db.get("rowHashes") || {};
},
_setRowHashes(rowHashes) {
this.db.set("rowHashes", rowHashes);
},
getMeta(worksheet, rowNumber) {
const ts = Date.now();
const rowHash = crypto
.createHash("md5")
.update(JSON.stringify(row))
.digest("base64");
// Include a hash of the row data in id to dedupe events for the same new row
const id = `${sheetId}${worksheetId}${rowNumber}${rowHash}`;
const id = `${worksheet.properties.sheetId}${rowNumber}${ts}`;
const summary = `New row #${rowNumber} in ${worksheet.properties.title}`;
return {
id,
Expand Down Expand Up @@ -154,21 +153,32 @@ export default {
: newRowCount,
);

const rowHashes = this._getRowHashes();
for (const [
index,
newRow,
] of newRowValues.values.entries()) {
const rowNumber = lowerBound + index;
const rowHash = crypto
.createHash("md5")
.update(JSON.stringify(newRow))
.digest("base64");
const rowHashString = `${worksheet.properties.sheetId}${rowNumber}${rowHash}`;
if (rowHashes[rowHashString]) {
continue;
}
rowHashes[rowHashString] = true;
this.$emit(
{
newRow,
range,
worksheet,
rowNumber,
},
this.getMeta(spreadsheet, worksheet, rowNumber, newRow),
this.getMeta(worksheet, rowNumber),
);
}
this._setRowHashes(rowHashes);
}
},
},
Expand Down
17 changes: 4 additions & 13 deletions components/google_sheets/sources/common/new-updates.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import crypto from "crypto";
import base from "./http-based/base.mjs";
import zlib from "zlib";

Expand All @@ -20,23 +19,15 @@ export default {
},
},
methods: {
getMeta(spreadsheet, worksheet, changes) {
getMeta(spreadsheet, worksheet) {
const {
sheetId: worksheetId,
title: worksheetTitle,
} = worksheet.properties;
const {
spreadsheetId: sheetId,
properties: { title: sheetTitle },
} = spreadsheet;

const changesHash = crypto
.createHash("md5")
.update(JSON.stringify(changes))
.digest("base64");
const { properties: { title: sheetTitle } } = spreadsheet;

const ts = Date.now();
const id = `${sheetId}${worksheetId}${changesHash}${ts}`;
const id = `${worksheetId}${ts}`;
const summary = `${sheetTitle} - ${worksheetTitle}`;
return {
id,
Expand Down Expand Up @@ -217,7 +208,7 @@ export default {
worksheet,
changes,
},
this.getMeta(spreadsheet, worksheet, changes),
this.getMeta(spreadsheet, worksheet),
);
}
this._setSheetValues(
Expand Down