[Python] Filtern Sie Tabellenkalkulationen mit gspread

Zweck

Ich möchte eine Tabelle mit gspread filtern. Da es kein anderes Verfahren als die offizielle Referenz (Selbstprüfung) gibt, werde ich es einführen.

Musterblatt

test_sheet.png

Ich werde dieses Blatt verwenden.

Code

import gspread
from oauth2client.service_account import ServiceAccountCredentials
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import os

#Finden Sie das Alphabet aus den Zahlen
def num2alpha(num):
    if num<=26:
        return chr(64+num)
    elif num%26==0:
        return num2alpha(num//26-1)+chr(90)
    else:
        return num2alpha(num//26)+chr(64+num%26)

#Der Pfad, in dem es gespeichert ist
abs_path = f'{os.path.dirname(os.path.abspath(__file__))}\\'

# GoogleAPI
scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
#Authentifizierungsschlüssel
json_keyfile_path = f'{abs_path}credentials.json'
#Lesen Sie den Dienstkontoschlüssel
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_path, scope)
#Führen Sie die OAuth-Authentifizierung für pydrive durch
gauth = GoogleAuth()
gauth.credentials = credentials
drive = GoogleDrive(gauth)
#Tabellenordner
folder_id = 'Ordner-ID'
#Rufen Sie eine Liste der Dateien im Tabellenordner ab
file_list = drive.ListFile({'q': "'%s' in parents and trashed=false" % folder_id}).GetList()
#Extrahieren Sie nur den Dateinamen aus der Dateiliste
title_list = [file['title'] for file in file_list]
#Authentifizieren Sie sich für gspread
gc = gspread.authorize(credentials)
#Tabellenkalkulations-ID
sheet_id = [file['id'] for file in file_list if file['title'] == 'test']
sheet_id = sheet_id[0]
#Arbeitsmappe öffnen
workbook = gc.open_by_key(sheet_id)
#Öffnen Sie das Arbeitsblatt
worksheet = workbook.worksheet('Blatt1')
#Holen Sie sich die letzte eingegebene Spalte
last_column_num = len(list(worksheet.row_values(1)))
print(f'last_column_num:{last_column_num}')
#Konvertieren Sie die letzte Spalte von der Zahl in das Alphabet
last_column_alp = num2alpha(last_column_num)
print(f'last_column_alp:{last_column_alp}')
#Filter
worksheet.set_basic_filter(name=(f'A:{last_column_alp}'))

Ausführungsergebnis


last_column_num:3
last_column_alp:C

test_sheet2.png

Codebeschreibung

Ich werde Schritt für Schritt erklären.

Arbeitsmappenentwicklung

#Der Pfad, in dem es gespeichert ist
abs_path = f'{os.path.dirname(os.path.abspath(__file__))}\\'

# GoogleAPI
scope = ['https://spreadsheets.google.com/feeds',
         'https://www.googleapis.com/auth/drive']
#Authentifizierungsschlüssel
json_keyfile_path = f'{abs_path}credentials.json'
#Lesen Sie den Dienstkontoschlüssel
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_keyfile_path, scope)
#Führen Sie die OAuth-Authentifizierung für pydrive durch
gauth = GoogleAuth()
gauth.credentials = credentials
drive = GoogleDrive(gauth)
#Tabellenordner
folder_id = 'Ordner-ID'
#Rufen Sie eine Liste der Dateien im Tabellenordner ab
file_list = drive.ListFile({'q': "'%s' in parents and trashed=false" % folder_id}).GetList()
#Extrahieren Sie nur den Dateinamen aus der Dateiliste
title_list = [file['title'] for file in file_list]
#Authentifizieren Sie sich für gspread
gc = gspread.authorize(credentials)
#Tabellenkalkulations-ID
sheet_id = [file['id'] for file in file_list if file['title'] == 'test']
sheet_id = sheet_id[0]
#Arbeitsmappe öffnen
workbook = gc.open_by_key(sheet_id)

Zunächst in diesem Teil

Angeben des Authentifizierungsschlüssels ↓ Greifen Sie auf Google Drive zu ↓ Geben Sie den Tabellenordner an ↓ Öffnen Sie die Arbeitsmappe, indem Sie den Dateinamen (Tabellenkalkulationsname) angeben.

Wir machen die Verarbeitung. Weitere Informationen finden Sie im folgenden Artikel. Erstellen und Bearbeiten von Tabellenkalkulationen in einem beliebigen Ordner auf Google Drive mit Python Google-Tabelle in Python bearbeiten

Filter

Hier ist der Filterteil des Hauptthemas.

#Öffnen Sie das Arbeitsblatt
worksheet = workbook.worksheet('Blatt1')

Erweitern Sie zunächst das Arbeitsblatt. Diesmal lautet der Name "Blatt 1". Geben Sie ihn daher als Blatt 1 an.

#Holen Sie sich die letzte eingegebene Spalte
last_column_num = len(list(worksheet.row_values(1)))
print(f'last_column_num:{last_column_num}')

Rufen Sie dann die letzte im Zielarbeitsblatt eingegebene Datenspalte ab.

Ausführungsergebnis


last_column_num:3

Wie Sie sehen können, wenn Sie sich das zuvor eingefügte Blatt ansehen, befindet es sich in der dritten Reihe, sodass Sie es gut erhalten können.

Es ist jedoch nicht möglich, einen Filter so anzuwenden, wie er ist. Daher muss die "dritte Spalte" in das alphabetische Format konvertiert werden. (Ich habe es mit numerischen Werten versucht, aber es hat nicht gut funktioniert, daher scheint es sich um eine Bibliotheksspezifikation zu handeln.)

#Finden Sie das Alphabet aus den Zahlen
def num2alpha(num):
    if num<=26:
        return chr(64+num)
    elif num%26==0:
        return num2alpha(num//26-1)+chr(90)
    else:
        return num2alpha(num//26)+chr(64+num%26)

#Konvertieren Sie die letzte Spalte von der Zahl in das Alphabet
last_column_alp = num2alpha(last_column_num)
print(f'last_column_alp:{last_column_alp}')

Ausführungsergebnis


last_column_alp:C

Ich konnte erfolgreich von 3 auf C konvertieren. Ich habe den im folgenden Artikel für die Konvertierungsfunktion verwendet. So konvertieren Sie Zahlen und Alphabete in Python ineinander

Und schließlich filtern.

#Filter
worksheet.set_basic_filter(name=(f'A:{last_column_alp}'))

Dies ist abgeschlossen.

Wenn Sie im Format "Startspalte: Endspalte" angeben, wird jede Spalte gefiltert.

In diesem Fall möchten wir die Spalten A bis C filtern, daher werden die obigen Spezifikationen verwendet.

Referenz

API Reference

Recommended Posts

[Python] Filtern Sie Tabellenkalkulationen mit gspread
Bildverarbeitung mit Python 100 Knock # 10 Medianfilter
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Getestet mit Python
Bildverarbeitung mit Python 100 Knock # 12 Bewegungsfilter
Python beginnt mit ()
mit Syntax (Python)
Bingo mit Python
Zundokokiyoshi mit Python
Excel mit Python
Bildverarbeitung mit Python 100 Knock # 9 Gauß-Filter
Mikrocomputer mit Python
Mit Python besetzen
Kantenextraktion mit Python + OpenCV (Sobel-Filter, Laplace-Filter)
Verfolgen Sie grüne Objekte mit Python + Numpy (Partikelfilter)
[Python] Fehlerbehebung vor dem Zugriff auf Google Spreadsheet mit gspread
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Python lernen mit ChemTHEATER 03
Sequentielle Suche mit Python
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python
[Python] Verwenden Sie JSON mit Python
Python lernen mit ChemTHEATER 05-1
Lerne Python mit ChemTHEATER
Führen Sie prepDE.py mit python3 aus
1.1 Erste Schritte mit Python
Tweets mit Python sammeln
Binarisierung mit OpenCV / Python
3. 3. KI-Programmierung mit Python
Kernel-Methode mit Python
Nicht blockierend mit Python + uWSGI
Scraping mit Python + PhantomJS
Filterliste in Python
Tweets mit Python posten
Verwenden Sie Mecab mit Python 3
[Python] Mit CGIHTTPServer umleiten
Sprachanalyse mit Python
Denken Sie an Yaml mit Python
Kinesis mit Python betreiben
Erste Schritte mit Python
Verwenden Sie DynamoDB mit Python
Zundko Getter mit Python
Behandle Excel mit Python
Ohmsches Gesetz mit Python