Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Nouveau Candidat au Club
    Insérer les données d'un .csv existant dans une feuille de calcul Google Sheet existante
    Bonjour à tous,

    J'espère que ce post est au bon endroit

    Je touche à la fin de mon but qui est de télécharger automatiquement des .csv disponibles sur un site protégé par un mot de passe, de combiner tous ces .csv en un seul puis de feed automatiquement une feuille de calcul Google Sheet avec les infos dans mon .csv combiné.

    J'ai réussi à tout combiner dans un seul .csv et d'un autre côté à me connecter à l'API Google Sheet pour y insérer les lignes que je veux (en tapant les mots que je souhaite insérer).

    En revanche, je n'arrive pas à faire en sorte que mon programme lise le .csv combiné puis le rebalance automatiquement sur Google Sheet

    Est-ce que quelqu'un à une idée sur comment faire ? je suis sûr que c'est simple, j'ai du regarder 40 vidéos youtubes mais c'est toujours des tutos pour ajouter des chiffres tapés à la mains sur un Gsheet

    Voici mon code pour combiner tous les csv. puis lire uniquement les datas qui m'intéressent (à noter que le .csv est toujours en format "une seule colonne"):

    ********************************
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
     
    import os
    import glob
    import pandas as pd
    import csv
     
    os.chdir("/Users/paul/Downloads")
     
    extension = 'csv'
    all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
     
    #combine all files in the list
    combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
    #export to csv
    combined_csv.to_csv("combined_csv.csv", index=False, encoding='utf-8-sig')
     
     
    with open('combined_csv.csv', encoding='utf8') as csv_file:
        tracking_numb = csv.DictReader(csv_file)
        print(tracking_numb)
        for tracking_numb in tracking_numb:
            print(tracking_numb['\ufeff\ufeffWaybill Number'], tracking_numb['Shipment Date'],tracking_numb['Recipient Country'], tracking_numb['Delivery Option'])

    ********************************

    Voici mon code si je veux rentrer ("I NEED HELP") sur ma google sheet :


    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    import gspread
    from oauth2client.service_account import ServiceAccountCredentials
     
    scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]
     
    creds = ServiceAccountCredentials.from_json_keyfile_name("creds.json", scope)
     
    client = gspread.authorize(creds)
     
    sheet = client.open("Python").sheet1
     
    data = sheet.get_all_records()
     
    row = sheet.row_values(3)
    col = sheet.col_values(3)
    cell = sheet.cell(1,2).value
     
    insertRow = ["I", "NEED", "HELP"]
    sheet.insert_row(insertRow, 2)


    ********************************

    Je suis sûr d'être près du but !!



    <config>Macintosh / Chrome 86.0.4240.111</config>

  2. #2
    Expert éminent sénior
    Salut,

    Normalement vous pouvez downloader et uploader des fichiers sans vous préoccuper de leur type.

    Google Sheet est juste une API pour les utiliser en tant que "tableau" (des lignes et des colonnes).

    C'est un peu comme EXCEL: un fichier XLS peut être déplacé ou vous voulez comme n'importe quel autre fichier. Par contre, ajouter une ligne au fichier sans lancer Excel n'est possible que pour des formats de fichiers particuliers.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau Candidat au Club
    Update : je suis plus près de but que jamais...

    J'ai combiné mes deux codes et réussi à faire en sorte que mon google sheet s'update avec la liste (print) du fichier .csv

    En revanche le google sheet ne s'update qu'avec la toute dernière donnée de la liste et non toutes les données :'(

    Quelqu'un sait comment modifier ce code pour faire en sorte que pour chaque ligne de mon .csv il insère une nouvelle row ?

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    import os
    import glob
    import pandas as pd
    import csv
     
    os.chdir("/Users/paul/Downloads")
     
    extension = 'csv'
    all_filenames = [i for i in glob.glob('*.{}'.format(extension))]
     
    #combine all files in the list
    combined_csv = pd.concat([pd.read_csv(f) for f in all_filenames ])
    #export to csv
    combined_csv.to_csv("combined_csv.csv", index=False, encoding='utf-8-sig')
     
     
    with open('combined_csv.csv', encoding='utf8') as csv_file:
        tracking_numb = csv.DictReader(csv_file)
        print(tracking_numb)
        for tracking_numb in tracking_numb:
            print(tracking_numb['\ufeff\ufeffWaybill Number'], tracking_numb['Shipment Date'],tracking_numb['Recipient Country'], tracking_numb['Delivery Option'])
     
    import gspread
    from oauth2client.service_account import ServiceAccountCredentials
     
    scope = ["https://spreadsheets.google.com/feeds",'https://www.googleapis.com/auth/spreadsheets',"https://www.googleapis.com/auth/drive.file","https://www.googleapis.com/auth/drive"]
     
    creds = ServiceAccountCredentials.from_json_keyfile_name("/Users/paul/PycharmProjects/pythonProject2/creds.json", scope)
     
    client = gspread.authorize(creds)
     
    sheet = client.open("Python").sheet1
     
    data = sheet.get_all_records()
     
    insertRow = [tracking_numb['\ufeff\ufeffWaybill Number'], tracking_numb['Shipment Date'],tracking_numb['Recipient Country'], tracking_numb['Delivery Option']]
    sheet.insert_row(insertRow, 2)

###raw>template_hook.ano_emploi###