Browse Source

fix: JS block doesn't respect column order

Ahmad Kholid 2 years ago
parent
commit
ac7e55706b

+ 2 - 2
src/workflowEngine/blocksHandler/handlerGoogleSheets.js

@@ -59,7 +59,7 @@ async function updateSpreadsheetValues(
   columns
 ) {
   let values = [];
-
+  console.log(columns);
   if (['data-columns', 'table'].includes(dataFrom)) {
     if (keysAsFirstRow) {
       values = convertArrObjTo2DArr(columns);
@@ -91,6 +91,7 @@ async function updateSpreadsheetValues(
       insertDataOption: insertDataOption || 'INSERT_ROWS',
     });
   }
+  console.log(values);
 
   const response = await googleSheets.updateValues({
     range,
@@ -114,7 +115,6 @@ export default async function ({ data, id }, { refData }) {
   if (isWhitespace(data.range)) throw new Error('empty-spreadsheet-range');
 
   let result = [];
-
   if (data.type === 'get') {
     const spreadsheetValues = await getSpreadsheetValues(data);
 

+ 6 - 0
src/workflowEngine/blocksHandler/handlerJavascriptCode.js

@@ -1,6 +1,7 @@
 import { customAlphabet } from 'nanoid/non-secure';
 import browser from 'webextension-polyfill';
 import cloneDeep from 'lodash.clonedeep';
+import { parseJSON } from '@/utils/helper';
 import {
   jsContentHandler,
   automaFetchClient,
@@ -96,6 +97,10 @@ async function executeInWebpage(args, target, worker) {
     func: jsContentHandler,
   });
 
+  if (typeof result?.columns?.data === 'string') {
+    result.columns.data = parseJSON(result.columns.data, {});
+  }
+
   return result;
 }
 
@@ -179,6 +184,7 @@ export async function javascriptCode({ outputs, data, ...block }, { refData }) {
         this
       ));
 
+  console.log(result);
   if (result) {
     if (result.columns.data?.$error) {
       throw new Error(result.columns.data.message);

+ 1 - 1
src/workflowEngine/utils/javascriptBlockUtil.js

@@ -155,8 +155,8 @@ export function jsContentHandler($blockData, $preloadScripts, $automaScript) {
           cleanUp(detail || {});
           resolve({
             columns: {
-              data: detail?.data,
               insert: detail?.insert,
+              data: JSON.stringify(detail?.data ?? {}),
             },
             variables: detail?.refData?.variables,
           });