[PYTHON] Beispielcode-Zusammenfassung bei der Arbeit mit Google-Tabellen von Google Colab

In letzter Zeit berühre ich häufig Google-Tabellen von Google Colab.

(Ich habe auch ein Video wie dieses, schauen Sie also bitte nach, wenn Sie möchten! → [[Python mit Safas Colab -9 lernen] So schreiben Sie Werte von Google Colab in Google Spreadsheet (YouTube)](https :: //www.youtube.com/watch?v=4RCWYQk9bfM))

Wenn ich es berühre, tippe ich oft den üblichen Code ein, deshalb habe ich beschlossen, die häufig verwendeten Beschreibungen in Qiita als Beispielcode zusammenzustellen.

Referenziertes Dokument

Grundsätzlich werde ich unter Bezugnahme auf das offizielle Dokument von "gspread" schreiben. gspread(Docs)

Installieren Sie gspread

Die Bibliothek "gspread", die für die Arbeit mit Google-Tabellen unerlässlich ist. Wenn Sie in Google Colab einen Befehl drücken, fügen Sie am Anfang "!" Hinzu.

!pip install gspread

Als ich bisher schrieb, bemerkte ich, dass Google Colab von Anfang an "gspread" installiert zu haben schien. Die installierte Version ist übrigens "3.0.1".

import gspread
print(gspread.__version__)
# => 3.0.1

Hierbei ist zu beachten, dass diese von Anfang an installierte Version 3.0.1 nicht die neueste Version ist. Daher gibt es einige Funktionen, die nicht verwendet werden können. burnash/gspread(Releases)

Wenn Sie die neueste "gspread" -Funktion verwenden möchten, müssen Sie daher die neueste "gspread" installieren, indem Sie den folgenden Befehl ausführen.

!pip install --upgrade gspread
import gspread
print(gspread.__version__)
# => 3.6.0

** Dieses Mal habe ich jedoch darüber nachgedacht, mit Google Colab zu schreiben, um Google-Tabellen sofort zu verarbeiten. Daher schreibe ich mit "3.0.1", das standardmäßig installiert ist. .. ** ** ** (Da die in der neuesten Version hinzugefügten Funktionen auch attraktiv sind, möchte ich dies als separaten Beitrag schreiben.)

Authentifizierungsprozess erforderlich, um Google-Tabellen aus Code zu verarbeiten

Dies ist ein wesentlicher Prozess für den Umgang mit Google-Tabellen von Google Colab. Wenn Sie diesen Code ausführen, erhalten Sie die Authentifizierung, die für die Arbeit mit Google-Tabellen in Google Colab erforderlich ist. (Fast wie "Magie" wird es beim Schreiben von Code verwendet, der Google-Tabellen verarbeitet. Wenn Sie Probleme beim Schreiben haben, können Sie diese Beschreibung mit Kopieren in Colab einfügen und ausführen.)

from google.colab import auth
from oauth2client.client import GoogleCredentials
import gspread

auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())

Ich bin mir nicht sicher, ob es sich bei dieser Authentifizierung um ein Google-Produkt, Google Colab und Google Spreadsheet handelt, aber es ist wirklich intelligent, sodass es ohne Probleme immer großartig ist.

Insbesondere sind die Schritte wie folgt.

Wenn Sie den obigen Code ausführen, wird die URL für die Authentifizierung angezeigt. Klicken Sie also darauf

スクリーンショット 2020-06-13 15.21.03.png

Sie werden zum Authentifizierungsbildschirm auf der Google-Seite weitergeleitet. Authentifizieren Sie sich also. Wenn die Authentifizierung abgeschlossen ist, wird der "Bestätigungscode" angezeigt. Kopieren Sie ihn daher.

スクリーンショット 2020-06-13 15.21.19.png

Wenn Sie den zuvor kopierten Code auf der Colab-Seite einfügen, ist die Authentifizierung abgeschlossen.

スクリーンショット 2020-06-13 15.21.31.png

Es ist einfach und wunderbar.

So erhalten Sie eine Google-Tabelle

In Bezug auf die Methode zum Abrufen der zu bedienenden Google-Tabelle bietet gspread verschiedene Methoden, daher werde ich jede davon vorstellen. Von hier aus schreibe ich den Code unter der Annahme, dass die oben beschriebene Authentifizierung abgeschlossen wurde. (Wenn Sie es ohne Authentifizierung ausführen, wird ein Authentifizierungsfehler angezeigt.)

Nach Dateinamen abrufen

Dies ist eine Methode zum direkten Öffnen nach Dateinamen.

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)

Holen Sie sich durch Tabellenkalkulations-ID

Öffnen mit der in der Tabellenkalkulations-URL enthaltenen ID. (Abgesehen davon hatte ich, soweit ich die Informationen auf Japanisch nachgeschlagen habe, den Eindruck, dass der häufigste Weg, sie zu öffnen, dieser Weg war.)

# https://docs.google.com/spreadsheets/d/{Dies ist die ID der Tabelle}/edit#gid=0
ss_id = "Tabellenkalkulations-ID"
workbook = gc.open_by_key(ss_id)

Nach URL abrufen

Es ist eine Methode, die URL der Tabelle so wie sie ist einzugeben und zu öffnen

ss_url = "Tabellenkalkulations-URL"
workbook = gc.open_by_url(ss_url)

Holen Sie sich alle Tabellen

Es gab auch eine Möglichkeit, alle Tabellen in Google Drive abzurufen. https://gspread.readthedocs.io/en/latest/api.html#gspread.Client.openall

Beim Ausführen wird eine Liste der Tabellen zurückgegeben.

workbook_list = gc.openall()
for workbook in workbook_list:
  print(workbook.title) #Zeigen Sie den Titel der abgerufenen Datei an

Wie bekomme ich ein Blatt

Mit der folgenden Methode können Sie ein bestimmtes Blatt für das oben erhaltene Arbeitsblatt abrufen.

So übergeben Sie den zu erfassenden Blattnamen an das Arbeitsblatt ()

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blatt1")

So übergeben Sie den Index des zu erfassenden Blattes an get_worksheet ()

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.get_worksheet(0)

So erhalten Sie den Wert im Blatt

Wie komme ich durch Angabe einer Zelle (acell)

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blatt1")

print(worksheet.acell("A1").value)
# =>Wert der Zelle A1

print(worksheet.acell("B2").value)
# =>B2 Zellenwert

print(worksheet.cell(3,2).value)
# =>B3-Zellenwert

So erhalten Sie durch Angabe einer Zelle (Bereich)

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blatt1")
print(worksheet.range(3,2)[0].value)
# =>Gibt für range ein Array von Zellen zurück
# =>Im Fall dieser Spezifikation ist nur eine Zelleninformation von B3 in dem Array enthalten, also so[0]Der Wert wird durch Angabe von mit erhalten

#Rufen Sie Zellinformationen in dem Bereich ab, den Sie angeben möchten. Da es sich mit einem Array ändert, werden alle Werte in einer Schleife ausgegeben
cell_list = worksheet.range("A1:B3")
for cell in cell_list:
  print(cell.value)

Informationen zum Zellenobjekt

Die hier erfasste Zelle hat übrigens die folgenden drei Eigenschaften.

Das Folgende ist beispielsweise ein Beispielcode zum Abrufen und Anzeigen des Werts einer Zelle im angegebenen Bereich ("A1: B3").

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blatt1")

#Rufen Sie Zellinformationen in dem Bereich ab, den Sie angeben möchten. Da es sich mit einem Array ändert, werden alle Werte in einer Schleife ausgegeben
cell_list = worksheet.range("A1:B3")
for cell in cell_list:
  print('%Linien%Der Wert in Spalte s ist%s' % (cell.row, cell.col, cell.value))

So erhalten Sie die Werte im Blatt (alle abrufen)

Es gibt die folgenden Methoden, um den Wert im angegebenen Blatt abzurufen.

get_all_records gibt eine Liste von Diktaten zurück

Wenn Sie "get_all_records" verwenden, wird der Wert des Zielblatts als Liste von Diktaten (Wörterbuch) zurückgegeben.

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blattname, den Sie erhalten möchten")

print(worksheet.get_all_records())
# => [{'item1': 2, 'item2': 4, 'item3': 31}, {'item1': 3, 'item2': 6, 'item3': 32}, ...

Wenn Sie es aufrufen, ohne Optionen anzugeben, wird die erste Zeile als Kopfzeile behandelt. Informationen zum Festlegen von Optionen finden Sie unter hier.

Wenn Sie beispielsweise den Wert im Blatt in json konvertieren möchten, lautet der Code wie folgt.

#Bei der Konvertierung in den angegebenen Blattwert json
import json
ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Name des Zielblatts")

dict_list = worksheet.get_all_records()
print(json.dumps(dict_list))

get_all_values gibt die Werte im Blatt als Array zurück

Eine andere Möglichkeit besteht darin, es einfach als Array von Werten mit get_all_values abzurufen.

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blattname, den Sie erhalten möchten")

print(worksheet.get_all_values())
# => [['item1', 'item2', 'item3'], ['2', '4', '31'], ['3', '6', '32'], ...

So fügen Sie einem Blatt einen Wert hinzu

Verwenden Sie "append_row", um dem Blatt Werte mit Zeilen hinzuzufügen. Das folgende Beispiel ist ein Beispielcode, der dem angegebenen Blatt 100 Zeilen mit dem Wert hinzufügt. (Wenn das Blatt beispielsweise bereits eine Beschreibung enthält, wird von dort aus eine neue Zeile hinzugefügt.)

import random

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blatt 2")

for i in range(100):
  worksheet.append_row([i, i * 2, random.randint(1, 100)])

Unten finden Sie eine Erfassung der tatsächlich eingegebenen Tabelle.

シートに値を行とともに値を追加した際のキャプチャ

Wenn Sie den gesamten Inhalt des Blattes löschen möchten (unpraktisch)

Wenn Sie den gesamten Inhalt des angegebenen Blattes löschen möchten, müssen Sie anscheinend Folgendes ausführen.

Da dies jedoch ein sehr heikler Code ist (die Anzahl der vorhandenen Zeilen wird zeilenweise gelöscht), ist es besser, alles auf einmal zu löschen, indem Sie das unten beschriebene Blatt selbst löschen. Sieht gut aus. </ font>

#Wenn Sie alle Werte im angegebenen Blatt löschen möchten
ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blattname")

for i in range(1, len(worksheet.get_all_values())):
  worksheet.delete_row(1)

Wenn Sie das neueste "gspread" verwenden möchten, wird delete_rows vorbereitet. Verwenden Sie dies also. Wenn Sie es verwenden, scheint es möglich zu sein, den gesamten angegebenen Zeilenbereich zu löschen.

Wenn Sie das Blatt selbst löschen möchten

Wenn Sie das Zielblatt selbst löschen möchten, übergeben Sie das Zielblatt selbst an "del_worksheet".

ss_name = "Name der Tabellenkalkulationsdatei"
workbook = gc.open(ss_name)
worksheet = workbook.worksheet("Blattname, den Sie löschen möchten")

workbook.del_worksheet(worksheet)

Nachwort

Das ist alles.

Ich habe gspread noch nicht ausprobiert, also hoffe ich, dass ich es nach und nach zu diesem Beitrag hinzufügen kann.

Recommended Posts

Beispielcode-Zusammenfassung bei der Arbeit mit Google-Tabellen von Google Colab
Codefragmente, die häufig bei der Verwendung von BigQuery mit Google Colab verwendet werden
Ein Memo bei der Ausführung des Beispielcodes von Deep Learning, der mit Google Colaboratory von Grund auf neu erstellt wurde
Cheet Sheet beim Schaben mit Google Colaboratory (Colab)
BigQuery-Python war nützlich, wenn Sie mit BigQuery aus Python arbeiten
Codefragmente, die häufig bei der Verarbeitung von Videos mit Google Colaboratory verwendet werden
Über das Lernen mit Google Colab
Zusammenfassung der Vor- und Nachteile beim Wechsel von CUnit zu Google Test
[SEO] Flow / Beispielcode bei Verwendung der Google Analytics-API in Python
Beispielcode-Zusammenfassung für die parallele / parallele Python-Verarbeitung
Spielen Sie mit Turtle auf Google Colab
Umgang mit OAuth2-Fehlern bei Verwendung von Google APIs aus Python
Impressionen und Memorandum bei der ersten Arbeit mit VScode
Verwendung von VS Code (Codeserver) mit Google Colab in nur 3 Zeilen
Bearbeiten von Azure CosmosDB aus Python Part.2
Snippet-Zusammenfassung bei der Entwicklung mit Go
Maschinelles Lernen mit Pytorch in Google Colab