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.
Ich werde dieses Blatt verwenden.
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
Ich werde Schritt für Schritt erklären.
#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
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.
Recommended Posts