2016-09-29 81 views
0

我想在Zapier中編寫一些JavaScript,它將讀取兩個日期,然後返回這些日期之間的所有日期的數組,然後可以使用它們在Airtable(數據庫)中創建多個日期記錄。從Zapier幫助它說,如果你返回一個對象數組,那麼下面的步驟將被處理。JavaScript中Zapier返回多個值發佈到Airtable數據庫

我已經設法獲得返回數據的代碼,但是它不能正確,因爲如果我嘗試創建數據庫記錄,只創建一個 - 所有日期都在(所以它只會在輸出時才起作用到文本字段 - 不是日期)。這裏是我的代碼的嘗試:

var fromDate = new Date(inputData.from); 
var toDate = new Date(inputData.to); 
var output =[]; 
var i = 1; 
do { 
    var useDate = new String(fromDate.toISOString()) 
    output.push(useDate); 
    console.log(fromDate); 
    fromDate.setDate(fromDate.getDate() + 1); 
    i++ 
} 
while (fromDate <= toDate); 
console.log(output); 
return{output}; 

的後續步驟確實看到輸出變量 - 但正如我上面所說的它被視爲一個值。

有沒有人有任何想法?

回答

0

它看起來像你返回一個對象,而不是對象的數組:

return{output};

而且,你的do/while語句創建字符串,而不是對象的數組。在do塊中,不要將useDate字符串推送到output數組,您應該構造一個簡單對象並將推送到輸出數組。

因此,不要每次循環運行時都推'2016-09-28T00:00:00.000Z',您應該推送類似{date: '2016-09-28T00:00:00.000Z'}的東西。

您這樣塊應該是這個樣子:

do { 
    var useDate = new String(fromDate.toISOString()); 
    var dateObject = {}; 
    dateObject.date = useDate; 
    output.push(dateObject); 
    fromDate.setDate(fromDate.getDate() + 1); 
    i++ 
} 

這樣,output將對象的數組:

[ 
    { 
    "date": "2016-09-28T00:00:00.000Z" 
    }, 
    { 
    "date": "2016-09-29T00:00:00.000Z" 
    }, 
    { 
    "date": "2016-09-30T00:00:00.000Z" 
    } 
] 
1

感謝胡安

這整理它 - 或在至少它取消了返回後 - 這裏是工作代碼:

var fromDate = new Date(inputData.from); 
var toDate = new Date(inputData.to); 
var output =[]; 
var i = 1; 
do { 
    var useDate = new String(fromDate.toISOString()) 
    var dateObject = {}; 
    dateObject.date = useDate; 
    output.push({dateObject}); 
    fromDate.setDate(fromDate.getDate() + 1); 
    i++ 
} 
while (fromDate <= toDate);