דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. אינטרנט
  3. שיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית

שיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית

מתוזמן נעוץ נעול הועבר אינטרנט
10 פוסטים 7 כותבים 563 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ח מנותק
    ח מנותק
    חוקר
    כתב ב נערך לאחרונה על ידי חוקר
    #1

    הייתי צריך כעת לשחזר נתונים מחשבון של קרוב המתנהל בבנק דיסקונט של משכנתא ששולמה בעבר והעברות שבוצעו לכיסוי המשכנתא.
    בתנועות אחרונות ניתן לייצא (נכון לעכשיו, בבנק דיסקונט) עד שנה אחורה.
    (יש שירות בדיסקונט של שיחזור דפי חשבון ישנים בצורת HTML אבל גם זה מוגבל ל3 שנים וניתן לייצא עד 17 דפים בבקשה אחת וצריך לסנן תאריכים ולשלם עמלה לכל בקשה ועדיין להשתגע להמיר את ה HTML לאקסל וכו'. קיצר לא לעניין).
    מצאתי שבתיבה האישית קיימים הנתונים כדפי חשבון (בחשבון המבוקש היו לי למפרע מ 05/2016, אין לי מושג במה זה תלוי, אבל לי זה הספיק) אך הם מופיעים כדפי חשבון ומפוזרים בין המכתבים ולא שייך לסנן אותם וכו'.
    ראיתי שזה מבוסס API שמקבל בשלב ראשון את רשימת המכתבים ובשלב שני API לקבל כל מכתב כמערך של השורות וכו'.
    יצרתי לעצמי סקריפט שמסנן את המכתבים רק של דפי חשבון, שולף רק את השורות של התנועות, מצליב את השנה מהכותרת לתאריך (ללא השנה) בשורה, מצליב 2/3 שורות של פירוט תנועה בודדת לשורה אחת, ויוצר מהם קובץ אקסל.
    בסקריפט צריך להזין ס"ה 2 נתונים, מספר החשבון ועוגיות הזדהות, וכמובן להריץ nodejs על המחשב/שרת.
    לשימוש בסקריפט יש להזדהות באתר של דיסקונט עם הפרטים, ולאחר מכן יש ללחוץ על F12 ואח"כ ללחוץ על הלחצן של תיבת הדואר הפנימי בחשבון
    452c9072-ef4d-47f8-9aa4-e462fbb38e8c-image.png
    כעת יופיע לנו ב network/רשת התחברות לAPI המבוקש
    ניתן לסנן בקלות "mailQuery" ולראות את השורה.
    נלחץ על השורה ובכותרת הבקשה נחפש את הקוקיז ונעתיק אותו
    99805136-d6e2-4172-a941-eaa1a9aa893e-image.png
    יש להדביק אותו בסקריפט (למותר לציין שזה רץ רק אצלכם במחשב והעוגיות לא עוברות לשרת אחר)
    כמו"כ יש להעתיק את מספר החשבון כפי שהוא מופיע בכותרות ולהדביק בסקריפט במיקום המבוקש
    f11a0ff8-c239-4bce-9b65-94893dce30fb-image.png
    וזהו נותר רק להריץ אץ הסקריפט ובסיומו יש לנו אקסל מסודר להפליא עם היסטוריית תנועות ישנות.
    בתקוה שהקוד יביא תועלת למישהו.
    שימו לב השתמשתי בקוד ב 3 ספריות חיצונית: node-fetch, moment, json2xls.
    השימוש בסקריפט הינו על אחריות המשתמש בלבד ואיני נושא בשום נזק שיגרם חלילה על ידי השימוש בו.
    (לי זה עבד ללא בעיות).
    להלן הקוד

    let fetch = require('node-fetch');
    let fs = require('fs');
    const moment = require('moment');
    const json2xls = require('json2xls');
    
    // כאן יש להדביק את מספר החשבון
    let accountNumber = "0012300000";
    // כאן יש להדביק את הקוקיז
    let cookie = "PD_STATEFUL_fadfads.......";
    
    let MessagesList = [];
    let MessageID = '';
    let pgnToDate = "";
    let pgnSubjectID = "";
    let pgnYear = 0;
    let pgnVer = 0;
    let pgnNum = 0;
    let MessagesData = [];
    let months = ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"];
    let lines = [];
    (async () => {
        let next = true;
        while (next) {
            let body = {
                "AccountNumber": accountNumber,
                "ListOrContentFlag": "listnotjoined",
                "StatusFilter": "U",
                "FromDate": "",
                "ToDate": "",
                "NumberOfBackDays": 3
            };
            if (MessageID) {
                body = {
                    "AccountNumber": accountNumber,
                    "ListOrContentFlag": "listnotjoined",
                    "StatusFilter": "U",
                    "FromDate": "",
                    "ToDate": "",
                    "NumberOfBackDays": 3,
                    "MessageID": MessageID,
                    "PgnToDate": pgnToDate,
                    "PgnSubjectID": pgnSubjectID,
                    "PgnYear": pgnYear,
                    "PgnVer": pgnVer,
                    "PgnNum": pgnNum
                }
            }
            // console.log(body);
            await fetch("https://start.telebank.co.il/Titan/gatewayAPI/discountMail/mailQuery", {
                "headers": {
                    "content-type": "application/json;charset=UTF-8",
                    "cookie": cookie,
                },
                "body": JSON.stringify(body),
                "method": "POST"
            }).then(res => res.json()).then(MailQuery => {
                if (MailQuery.MailQuery && MailQuery.MailQuery.PaginationBlock) {
                    MessageID = MailQuery.MailQuery.PaginationBlock.PaginationMessageID;
                    pgnToDate = MailQuery.MailQuery.PaginationBlock.PaginationMessageCreationDate;
                    pgnSubjectID = MailQuery.MailQuery.PaginationBlock.PaginationMessageSubject;
                    pgnYear = MailQuery.MailQuery.PaginationBlock.PaginationMessageYear;
                    pgnVer = MailQuery.MailQuery.PaginationBlock.PaginationMessageVersion;
                    pgnNum = MailQuery.MailQuery.PaginationBlock.PaginationPageNumber;
                    next = true;
                } else {
                    next = false;
                }
                try {
                    if (MailQuery.MailQuery.MessageInfo){
                        MessagesList.push(...MailQuery.MailQuery.MessageInfo)
                    }
                } catch (e) {
                    console.log(e);
                }
            }).catch(console.error);
        }
        // console.log(MessagesList);
        for (let i = 0; i < MessagesList.length; i++) {
            let message = MessagesList[i];
            if (message.SubjectID === 'COH012') {
                console.log('MessageIDNumber: ' + message.MessageIDNumber, 'index: ' + i, 'from: ' + MessagesList.length);
                await fetch("https://start.telebank.co.il/Titan/gatewayAPI/discountMail/mailQuery", {
                    "headers": {
                        "content-type": "application/json;charset=UTF-8",
                        "cookie": cookie,
                    },
                    "body": "{\"ListOrContentFlag\":\"content\",\"AccountNumber\":\"0096343062\",\"MessageIdForDetails\":\"" + message.MessageIDNumber + "\"}",
                    "method": "POST"
                }).then(res => res.json()).then(MailQuery => {
                    try {
                        let LineInfoEntry = MailQuery.MailQuery.MessageInfo[0].PageInfoBlock.PageInfoEntry[0].LineInfoBlock.LineInfoEntry;
                        if (LineInfoEntry){
                            console.log('ok');
                            MessagesData.push(...LineInfoEntry)
                            let month = LineInfoEntry[3].LineTextMessage.slice(1).match(months.join("|"))[0];
                            let start = 1 + month.length + 1;
                            let year = LineInfoEntry[3].LineTextMessage.substr(start, 4);
                            LineInfoEntry = LineInfoEntry.slice(4);
                            for (let i in LineInfoEntry){
                                let row = LineInfoEntry[i];
                                if (/^ \d/.test(row.LineTextMessage)){
                                    let i = 1;
                                    let obj = {};
                                    obj['תאריך'] = moment(row.LineTextMessage.substr(i, 5) + '/' + year, 'DD/MM/YYYY').format('YYYY-MM-DD');i++; i = i + 5;
                                    obj['תאריך ערך'] = row.LineTextMessage.substr(i, 1) !== ' ' ? moment(row.LineTextMessage.substr(i, 5) + '/' + year, 'DD/MM/YYYY').format('YYYY-MM-DD') : '';i++; i = i + 5;
                                    obj['סוג'] = row.LineTextMessage.substr(i, 1);i++; i = i + 1;
                                    obj['תיאור'] = row.LineTextMessage.substr(i, 31);i++; i = i + 31;
                                    obj['אסמכתא'] = row.LineTextMessage.substr(i, 10);i++; i = i + 10;
                                    obj['זכות'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                    if (isNaN(obj['זכות'])){
                                        obj['זכות'] = '';
                                    }
                                    obj['חובה'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                    if (isNaN(obj['חובה'])){
                                        obj['חובה'] = '';
                                    }
                                    obj['יתרה'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                    if (isNaN(obj['יתרה'])){
                                        obj['יתרה'] = '';
                                    }
                                    obj['תוכן'] = row.LineTextMessage;
                                    lines.push(obj);
                                } else if (row.LineTextMessage.slice(1).match(months.join("|"))){
                                    month = row.LineTextMessage.slice(1).match(months.join("|"))[0];
                                    year = row.LineTextMessage.substr(1 + month.length + 1, 4);
                                } else if (/^\s{15}\S/.test(row.LineTextMessage)){
                                    lines[lines.length - 1]['תיאור'] += row.LineTextMessage.slice(15, 31);
                                    if (row.LineTextMessage.slice(81, 10) !== ''){
                                        lines[lines.length - 1]['יתרה'] += row.LineTextMessage.slice(81, 10);
                                    }
                                    lines[lines.length - 1]['תוכן'] += '|' + row.LineTextMessage;
                                }else if (/^\s{75}\S/.test(row.LineTextMessage)) {
                                    lines[lines.length - 1]['אסמכתא'] += row.LineTextMessage.substr(75, 10);
                                    if (row.LineTextMessage.slice(81, 10) !== ''){
                                        lines[lines.length - 1]['יתרה'] += row.LineTextMessage.slice(81, 10);
                                    }
                                    lines[lines.length - 1]['תוכן'] += '|' + row.LineTextMessage;
                                }
                            }
                        }
                    } catch (e) {
                        console.log(e);
                    }
                }).catch(console.error);
            }
        }
        console.log(lines);
        fs.writeFileSync('./MessagesData ' + moment().unix() + '.json', JSON.stringify(MessagesData));
        fs.writeFileSync('./lines ' + moment().unix() + '.json', JSON.stringify(lines));
        let excel = json2xls(lines);
        fs.writeFileSync('./lines ' + moment().unix() + '.xlsx', excel, 'binary');
    })();
    
    ל I 2 תגובות תגובה אחרונה
    17
    • ל מנותק
      ל מנותק
      לעזור לכולם
      השיב לחוקר ב נערך לאחרונה על ידי
      #2

      @חוקר אמר בשיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית:

      השימוש בסקריפט אינו על אחריות המשתמש בלבד

      כנראה התכוונת לכתוב "הינו" על אחריות המשתמש...

      ח תגובה 1 תגובה אחרונה
      1
      • ח מנותק
        ח מנותק
        חוקר
        השיב ללעזור לכולם ב נערך לאחרונה על ידי
        #3

        @לעזור-לכולם אמר בשיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית:

        כנראה התכוונת לכתוב "הינו" על אחריות המשתמש...

        תודה
        תיקנתי

        תגובה 1 תגובה אחרונה
        1
        • ח מנותק
          ח מנותק
          חוקר
          כתב ב נערך לאחרונה על ידי
          #4

          אם מישהו הספיק להעתיק את הקוד
          שימו לב לשינוי, ערכתי והחלפתי מ parseInt ל parseFloat
          בגלל שזה השמיט את האגורות, כעת מתוקן ותקין ב"ה.
          אני אמנם עבדתי זמן מה להבין את הAPI של דיסקונט ובעיקר להבין את מבנה התוכן המתקבל, אך בסופו של יום קבלת הנתונים בצורת אקסל סייעו לי מאוד.
          הייתי צריך לחשב 2 משכנתאות והעברות שהיו נגד המשכנתאות ולהצליב את הנתונים, זה היה תענוג לחפש באקסל בקלות את התנועות ולבדוק את ההפרשים, בהחלט אשמח מאוד אם זה יביא למישהו תועלת ויחסוך לו לחפור ולהעתיק או להזין ידנית.

          תגובה 1 תגובה אחרונה
          8
          • I מנותק
            I מנותק
            ivrtikshoret
            השיב לחוקר ב נערך לאחרונה על ידי
            #5

            @חוקר כתב בשיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית:

            הייתי צריך כעת לשחזר נתונים מחשבון של קרוב המתנהל בבנק דיסקונט של משכנתא ששולמה בעבר והעברות שבוצעו לכיסוי המשכנתא.
            בתנועות אחרונות ניתן לייצא (נכון לעכשיו, בבנק דיסקונט) עד שנה אחורה.
            (יש שירות בדיסקונט של שיחזור דפי חשבון ישנים בצורת HTML אבל גם זה מוגבל ל3 שנים וניתן לייצא עד 17 דפים בבקשה אחת וצריך לסנן תאריכים ולשלם עמלה לכל בקשה ועדיין להשתגע להמיר את ה HTML לאקסל וכו'. קיצר לא לעניין).
            מצאתי שבתיבה האישית קיימים הנתונים כדפי חשבון (בחשבון המבוקש היו לי למפרע מ 05/2016, אין לי מושג במה זה תלוי, אבל לי זה הספיק) אך הם מופיעים כדפי חשבון ומפוזרים בין המכתבים ולא שייך לסנן אותם וכו'.
            ראיתי שזה מבוסס API שמקבל בשלב ראשון את רשימת המכתבים ובשלב שני API לקבל כל מכתב כמערך של השורות וכו'.
            יצרתי לעצמי סקריפט שמסנן את המכתבים רק של דפי חשבון, שולף רק את השורות של התנועות, מצליב את השנה מהכותרת לתאריך (ללא השנה) בשורה, מצליב 2/3 שורות של פירוט תנועה בודדת לשורה אחת, ויוצר מהם קובץ אקסל.
            בסקריפט צריך להזין ס"ה 2 נתונים, מספר החשבון ועוגיות הזדהות, וכמובן להריץ nodejs על המחשב/שרת.
            לשימוש בסקריפט יש להזדהות באתר של דיסקונט עם הפרטים, ולאחר מכן יש ללחוץ על F12 ואח"כ ללחוץ על הלחצן של תיבת הדואר הפנימי בחשבון
            452c9072-ef4d-47f8-9aa4-e462fbb38e8c-image.png
            כעת יופיע לנו ב network/רשת התחברות לAPI המבוקש
            ניתן לסנן בקלות "mailQuery" ולראות את השורה.
            נלחץ על השורה ובכותרת הבקשה נחפש את הקוקיז ונעתיק אותו
            99805136-d6e2-4172-a941-eaa1a9aa893e-image.png
            יש להדביק אותו בסקריפט (למותר לציין שזה רץ רק אצלכם במחשב והעוגיות לא עוברות לשרת אחר)
            כמו"כ יש להעתיק את מספר החשבון כפי שהוא מופיע בכותרות ולהדביק בסקריפט במיקום המבוקש
            f11a0ff8-c239-4bce-9b65-94893dce30fb-image.png
            וזהו נותר רק להריץ אץ הסקריפט ובסיומו יש לנו אקסל מסודר להפליא עם היסטוריית תנועות ישנות.
            בתקוה שהקוד יביא תועלת למישהו.
            שימו לב השתמשתי בקוד ב 3 ספריות חיצונית: node-fetch, moment, json2xls.
            השימוש בסקריפט הינו על אחריות המשתמש בלבד ואיני נושא בשום נזק שיגרם חלילה על ידי השימוש בו.
            (לי זה עבד ללא בעיות).
            להלן הקוד

            let fetch = require('node-fetch');
            let fs = require('fs');
            const moment = require('moment');
            const json2xls = require('json2xls');
            
            // כאן יש להדביק את מספר החשבון
            let accountNumber = "0012300000";
            // כאן יש להדביק את הקוקיז
            let cookie = "PD_STATEFUL_fadfads.......";
            
            let MessagesList = [];
            let MessageID = '';
            let pgnToDate = "";
            let pgnSubjectID = "";
            let pgnYear = 0;
            let pgnVer = 0;
            let pgnNum = 0;
            let MessagesData = [];
            let months = ["ינואר", "פברואר", "מרץ", "אפריל", "מאי", "יוני", "יולי", "אוגוסט", "ספטמבר", "אוקטובר", "נובמבר", "דצמבר"];
            let lines = [];
            (async () => {
                let next = true;
                while (next) {
                    let body = {
                        "AccountNumber": accountNumber,
                        "ListOrContentFlag": "listnotjoined",
                        "StatusFilter": "U",
                        "FromDate": "",
                        "ToDate": "",
                        "NumberOfBackDays": 3
                    };
                    if (MessageID) {
                        body = {
                            "AccountNumber": accountNumber,
                            "ListOrContentFlag": "listnotjoined",
                            "StatusFilter": "U",
                            "FromDate": "",
                            "ToDate": "",
                            "NumberOfBackDays": 3,
                            "MessageID": MessageID,
                            "PgnToDate": pgnToDate,
                            "PgnSubjectID": pgnSubjectID,
                            "PgnYear": pgnYear,
                            "PgnVer": pgnVer,
                            "PgnNum": pgnNum
                        }
                    }
                    // console.log(body);
                    await fetch("https://start.telebank.co.il/Titan/gatewayAPI/discountMail/mailQuery", {
                        "headers": {
                            "content-type": "application/json;charset=UTF-8",
                            "cookie": cookie,
                        },
                        "body": JSON.stringify(body),
                        "method": "POST"
                    }).then(res => res.json()).then(MailQuery => {
                        if (MailQuery.MailQuery && MailQuery.MailQuery.PaginationBlock) {
                            MessageID = MailQuery.MailQuery.PaginationBlock.PaginationMessageID;
                            pgnToDate = MailQuery.MailQuery.PaginationBlock.PaginationMessageCreationDate;
                            pgnSubjectID = MailQuery.MailQuery.PaginationBlock.PaginationMessageSubject;
                            pgnYear = MailQuery.MailQuery.PaginationBlock.PaginationMessageYear;
                            pgnVer = MailQuery.MailQuery.PaginationBlock.PaginationMessageVersion;
                            pgnNum = MailQuery.MailQuery.PaginationBlock.PaginationPageNumber;
                            next = true;
                        } else {
                            next = false;
                        }
                        try {
                            if (MailQuery.MailQuery.MessageInfo){
                                MessagesList.push(...MailQuery.MailQuery.MessageInfo)
                            }
                        } catch (e) {
                            console.log(e);
                        }
                    }).catch(console.error);
                }
                // console.log(MessagesList);
                for (let i = 0; i < MessagesList.length; i++) {
                    let message = MessagesList[i];
                    if (message.SubjectID === 'COH012') {
                        console.log('MessageIDNumber: ' + message.MessageIDNumber, 'index: ' + i, 'from: ' + MessagesList.length);
                        await fetch("https://start.telebank.co.il/Titan/gatewayAPI/discountMail/mailQuery", {
                            "headers": {
                                "content-type": "application/json;charset=UTF-8",
                                "cookie": cookie,
                            },
                            "body": "{\"ListOrContentFlag\":\"content\",\"AccountNumber\":\"0096343062\",\"MessageIdForDetails\":\"" + message.MessageIDNumber + "\"}",
                            "method": "POST"
                        }).then(res => res.json()).then(MailQuery => {
                            try {
                                let LineInfoEntry = MailQuery.MailQuery.MessageInfo[0].PageInfoBlock.PageInfoEntry[0].LineInfoBlock.LineInfoEntry;
                                if (LineInfoEntry){
                                    console.log('ok');
                                    MessagesData.push(...LineInfoEntry)
                                    let month = LineInfoEntry[3].LineTextMessage.slice(1).match(months.join("|"))[0];
                                    let start = 1 + month.length + 1;
                                    let year = LineInfoEntry[3].LineTextMessage.substr(start, 4);
                                    LineInfoEntry = LineInfoEntry.slice(4);
                                    for (let i in LineInfoEntry){
                                        let row = LineInfoEntry[i];
                                        if (/^ \d/.test(row.LineTextMessage)){
                                            let i = 1;
                                            let obj = {};
                                            obj['תאריך'] = moment(row.LineTextMessage.substr(i, 5) + '/' + year, 'DD/MM/YYYY').format('YYYY-MM-DD');i++; i = i + 5;
                                            obj['תאריך ערך'] = row.LineTextMessage.substr(i, 1) !== ' ' ? moment(row.LineTextMessage.substr(i, 5) + '/' + year, 'DD/MM/YYYY').format('YYYY-MM-DD') : '';i++; i = i + 5;
                                            obj['סוג'] = row.LineTextMessage.substr(i, 1);i++; i = i + 1;
                                            obj['תיאור'] = row.LineTextMessage.substr(i, 31);i++; i = i + 31;
                                            obj['אסמכתא'] = row.LineTextMessage.substr(i, 10);i++; i = i + 10;
                                            obj['זכות'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                            if (isNaN(obj['זכות'])){
                                                obj['זכות'] = '';
                                            }
                                            obj['חובה'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                            if (isNaN(obj['חובה'])){
                                                obj['חובה'] = '';
                                            }
                                            obj['יתרה'] = parseFloat(row.LineTextMessage.substr(i, 10).replace(',', '').trim());i++; i = i + 10;
                                            if (isNaN(obj['יתרה'])){
                                                obj['יתרה'] = '';
                                            }
                                            obj['תוכן'] = row.LineTextMessage;
                                            lines.push(obj);
                                        } else if (row.LineTextMessage.slice(1).match(months.join("|"))){
                                            month = row.LineTextMessage.slice(1).match(months.join("|"))[0];
                                            year = row.LineTextMessage.substr(1 + month.length + 1, 4);
                                        } else if (/^\s{15}\S/.test(row.LineTextMessage)){
                                            lines[lines.length - 1]['תיאור'] += row.LineTextMessage.slice(15, 31);
                                            if (row.LineTextMessage.slice(81, 10) !== ''){
                                                lines[lines.length - 1]['יתרה'] += row.LineTextMessage.slice(81, 10);
                                            }
                                            lines[lines.length - 1]['תוכן'] += '|' + row.LineTextMessage;
                                        }else if (/^\s{75}\S/.test(row.LineTextMessage)) {
                                            lines[lines.length - 1]['אסמכתא'] += row.LineTextMessage.substr(75, 10);
                                            if (row.LineTextMessage.slice(81, 10) !== ''){
                                                lines[lines.length - 1]['יתרה'] += row.LineTextMessage.slice(81, 10);
                                            }
                                            lines[lines.length - 1]['תוכן'] += '|' + row.LineTextMessage;
                                        }
                                    }
                                }
                            } catch (e) {
                                console.log(e);
                            }
                        }).catch(console.error);
                    }
                }
                console.log(lines);
                fs.writeFileSync('./MessagesData ' + moment().unix() + '.json', JSON.stringify(MessagesData));
                fs.writeFileSync('./lines ' + moment().unix() + '.json', JSON.stringify(lines));
                let excel = json2xls(lines);
                fs.writeFileSync('./lines ' + moment().unix() + '.xlsx', excel, 'binary');
            })();
            

            יש אפשרות הרבה יותר קלה אבל לצערי לא אוכל לכתוב את זה פה
            תבדקו טוב ותראו לבד...

            WWWW A 2 תגובות תגובה אחרונה
            -1
            • WWWW מנותק
              WWWW מנותק
              WWW
              השיב לivrtikshoret ב נערך לאחרונה על ידי
              #6

              @ivrtikshoret כתב בשיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית:

              יש אפשרות הרבה יותר קלה אבל לצערי לא אוכל לכתוב את זה פה

              ??

              WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

              תגובה 1 תגובה אחרונה
              4
              • A מנותק
                A מנותק
                avi rz
                השיב לivrtikshoret ב נערך לאחרונה על ידי
                #7

                @ivrtikshoret כתב בשיתוף סקריפט nodejs להורדת אקסל תנועות עו"ש מבנק דיסקונט משנים קודמים באמצעות התיבה האישית:

                יש אפשרות הרבה יותר קלה אבל לצערי לא אוכל לכתוב את זה פה
                תבדקו טוב ותראו לבד...

                אתה מתכון בעצם לפירצת אבטחה שיש בדיסקונט?
                אם לא, אז למה לא תוכל לכתוב כאן?

                תגובה 1 תגובה אחרונה
                0
                • A מנותק
                  A מנותק
                  avi rz
                  כתב ב נערך לאחרונה על ידי
                  #8

                  @חוקר לא מצליח להתקין את הספריות עם התלויות שלהם, יש מישהו שיוכל להעלות את package.json שעובד?

                  ElhananE dovidD 2 תגובות תגובה אחרונה
                  0
                  • ElhananE מנותק
                    ElhananE מנותק
                    Elhanan
                    השיב לavi rz ב נערך לאחרונה על ידי Elhanan
                    #9

                    @avi-rz מבלי לבדוק את הקוד עצמו, תוכל לפרט מה הבעיות בהתקנת הספרייה? כי אצלי הספריות מותקנות מצויין.
                    ליתר ביטחון ניסיתי להתקין אצלי את הספריות עם הפקודה

                    sudo npm i node-fetch moment json2xls
                    

                    f8da4be1-789a-49af-b06b-85d8a33e4554-image.png

                    וכמובן עובד מצויין, אמנם יש אזהרה על שתי ״פגיעויות אבטחה״ (severity vulnerabilities) בתלויות jszip בגרסא 3.7.1 ובnode-zip שגם נפגעת מהפגיעה בjszip, ו npm audit fix אכן לא מצא גרסא חדשה יותר שמטפלת בבעית האבטחה, אבל בכל מקרה הספריות עובדות (אצלי לכה״פ) מצוין.

                    זה הpackage.json שנוצר אצלי:
                    288ef70b-12b4-4b48-ae75-bfd3a8de3777-image.png

                    בכ״א בלי פרטים נוספים על השגיאה שמתקבלת אצלך יהיה קשה לענות תשובה ברורה..

                    פורום איש את רעהו|חיתוך שירים|בלוג|מקצר קישורים|ביו

                    תגובה 1 תגובה אחרונה
                    2
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      השיב לavi rz ב נערך לאחרונה על ידי
                      #10

                      @avi-rz לפי חוקי הפורום זו הקפצה לא מוצדקת.

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      0
                      • dovidD dovid נעל נושא זה ב-

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום