Skip to content

Instantly share code, notes, and snippets.

@userhooke
Created February 3, 2020 11:16
Show Gist options
  • Save userhooke/51f0160fdebeb0bab3a3a159acdff9d5 to your computer and use it in GitHub Desktop.
Save userhooke/51f0160fdebeb0bab3a3a159acdff9d5 to your computer and use it in GitHub Desktop.
Serverless script to link Monobank API and YNAB
const ynab = require("ynab");
const ynabAPI = new ynab.API(process.env.YNAB_TOKEN);
const adMaioraBudgetId = process.env.BUDGET_ID;
const monoDebitAccountId = process.env.MONO_DEBIT_ACCOUNT_ID;
module.exports.handler = (event, context, callback) => {
const body = JSON.parse(event.body);
console.log('Event body: ', body);
if (!body || !body.data || !body.data.statementItem) {
callback(null, {
statusCode: 400,
headers: {},
body: JSON.stringify({error: "No data provided :("})
});
}
callback(null, {
statusCode: 200,
headers: {},
body: JSON.stringify({status: 'Ok!'})
});
ynabAPI.transactions
.createTransaction(adMaioraBudgetId, {
transaction: {
account_id: monoDebitAccountId,
date: ynab.utils.getCurrentDateInISOFormat(),
amount: body.data.statementItem.amount + "0",
payee_name: body.data.statementItem.description
}
})
.then(res => {
console.log('YNAB Response: ', res);
})
.catch(err => {
console.error('YNAB error: ', err);
});
};
@mrmauadi
Copy link

const ynab = require ( "ynab" ) ;
const ynabAPI = ynab جديد . API ( عملية . env . YNAB_TOKEN ) ;
const adMaioraBudgetId = معالجة . بيئة . BUDGET_ID ;
const monoDebitAccountId = العملية . بيئة . MONO_DEBIT_ACCOUNT_ID ;

وحدة . الصادرات . المعالج = ( الحدث ، السياق ، رد الاتصال ) => {

جسم ثابت = JSON . تحليل ( حدث . الجسم ) ;
وحدة التحكم . سجل ( 'نص الحدث:' ، الجسم ) ؛

إذا ( ! الجسم || ! الجسم . البيانات || ! الجسم . البيانات . بيانItem ) {
رد الاتصال ( فارغة ، {
رمز الحالة : 400 ,
العناوين : { } ,
الجسم : جيسون . stringify ( { خطأ : "لم يتم تقديم بيانات :(" } )
} ) ;
}

رد الاتصال ( فارغة ، {
رمز الحالة : 200 ,
العناوين : { } ,
الجسم : جيسون . سلسلة ( { الحالة : 'حسنًا!' } )
} ) ;

ynabAPI . المعاملات
. إنشاء المعاملات ( adMaioraBudgetId ، {
عملية : {
account_id : monoDebitAccountId ,
التاريخ : يناب . يستخدم . getCurrentDateInISOFormat ( ) ,
المبلغ : الجسم . بيانات . بيان البند . المبلغ + "0" ،
payee_name : الجسم . بيانات . بيان البند . وصف
}
} )
. ثم ( الدقة => {
وحدة التحكم . سجل ( 'استجابة YNAB:' ، الدقة ) ؛
} )
. قبض ( يخطئ => {
وحدة التحكم . خطأ ( 'خطأ YNAB:' ، يخطئ ) ؛
} ) ;
} ;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment