handler-google-sheets.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { getBlockConnection } from '../helper';
  2. import { getGoogleSheetsValue } from '@/utils/api';
  3. import { convert2DArrayToArrayObj, isWhitespace } from '@/utils/helper';
  4. async function getSpreadsheetValues(data) {
  5. const response = await getGoogleSheetsValue(data.spreadsheetId, data.range);
  6. if (response.status !== 200) {
  7. throw new Error(response.statusText);
  8. }
  9. const { values } = await response.json();
  10. const sheetsData = data.firstRowAsKey
  11. ? convert2DArrayToArrayObj(values)
  12. : values;
  13. return sheetsData;
  14. }
  15. export default async function ({ data, outputs }) {
  16. const nextBlockId = getBlockConnection({ outputs });
  17. try {
  18. if (isWhitespace(data.spreadsheetId))
  19. throw new Error('empty-spreadsheet-id');
  20. if (isWhitespace(data.range)) throw new Error('empty-spreadsheet-range');
  21. let result = '';
  22. if (data.type === 'get') {
  23. const spreadsheetValues = await getSpreadsheetValues(data);
  24. result = spreadsheetValues;
  25. if (data.refKey && !isWhitespace(data.refKey)) {
  26. this.googleSheets[data.refKey] = spreadsheetValues;
  27. }
  28. }
  29. return {
  30. nextBlockId,
  31. data: result,
  32. };
  33. } catch (error) {
  34. error.nextBlockId = nextBlockId;
  35. console.log(error.message, 'halo');
  36. throw error;
  37. }
  38. }