feat(google-sheets): add create spreadsheet action

This commit is contained in:
Rıdvan Akca
2023-06-23 19:47:04 +03:00
committed by Ali BARIN
parent 92638c2e97
commit 3c9bc53a79
3 changed files with 110 additions and 2 deletions

View File

@@ -0,0 +1,105 @@
import defineAction from '../../../../helpers/define-action';
type THeaders = {
__id: string;
header: string;
}[];
export default defineAction({
name: 'Create spreadsheet',
key: 'createSpreadsheet',
description:
'Create a blank spreadsheet or duplicate an existing spreadsheet. Optionally, provide headers.',
arguments: [
{
label: 'Title',
key: 'title',
type: 'string' as const,
required: true,
description: '',
variables: true,
},
{
label: 'Spreadsheet to copy',
key: 'spreadsheetId',
type: 'dropdown' as const,
required: false,
description: 'Choose a spreadsheet to copy its data.',
variables: true,
source: {
type: 'query',
name: 'getDynamicData',
arguments: [
{
name: 'key',
value: 'listSpreadsheets',
},
],
},
},
{
label: 'Headers',
key: 'headers',
type: 'dynamic' as const,
required: false,
description:
'These headers are ignored if "Spreadsheet to Copy" is selected.',
fields: [
{
label: 'Header',
key: 'header',
type: 'string' as const,
required: true,
variables: true,
},
],
},
],
async run($) {
if ($.step.parameters.spreadsheetId) {
const body = { name: $.step.parameters.title };
const { data } = await $.http.post(
`https://www.googleapis.com/drive/v3/files/${$.step.parameters.spreadsheetId}/copy`,
body
);
$.setActionItem({
raw: data,
});
} else {
const headers = $.step.parameters.headers as THeaders;
const values = headers.map((entry) => entry.header);
const spreadsheetBody = {
properties: {
title: $.step.parameters.title,
},
sheets: [
{
data: [
{
startRow: 0,
startColumn: 0,
rowData: [
{
values: values.map((header) => ({
userEnteredValue: { stringValue: header },
})),
},
],
},
],
},
],
};
const { data } = await $.http.post('/v4/spreadsheets', spreadsheetBody);
$.setActionItem({
raw: data,
});
}
},
});

View File

@@ -1,3 +1,4 @@
import createSpreadsheetRow from './create-spreadsheet-row';
import createSpreadsheet from './create-spreadsheet';
export default [createSpreadsheetRow];
export default [createSpreadsheetRow, createSpreadsheet];

View File

@@ -2,7 +2,9 @@
favicon: /favicons/google-sheets.svg
items:
- name: Create Spreadsheet Row
desc: Creates a new row in a specific spreadsheet
desc: Creates a new row in a specific spreadsheet.
- name: Create Spreadsheet
desc: Create a blank spreadsheet or duplicate an existing spreadsheet. Optionally, provide headers.
---
<script setup>