Interfejs Google Sheets API umożliwia zapisywanie wartości i formuł w komórkach, zakresach, zestawach zakresów i całych arkuszach. Przykłady na tej stronie pokazują, jak za pomocą zasobu spreadsheets.values
interfejsu Sheets API można wykonać niektóre typowe operacje zapisu.
Warto pamiętać, że wartości komórek można też zapisywać za pomocą metody spreadsheet.batchUpdate
, co może być przydatne, jeśli chcesz jednocześnie zaktualizować formatowanie komórek lub inne właściwości, na które nie ma wpływu zasób spreadsheets.values
. Jeśli na przykład chcesz skopiować zakres komórek z jednego arkusza do drugiego, zastępując zarówno formułę komórki, jak i formatowanie komórki, możesz użyć metody UpdateCellsRequest
z spreadsheet.batchUpdate
.
W przypadku prostych zapisów wartości łatwiej jest jednak użyć metody
spreadsheets.values.update
lub metody
spreadsheets.values.batchUpdate
.
Przykłady te są przedstawione w formie żądań HTTP, aby były niezależne od języka. Aby dowiedzieć się, jak implementować zapisy w różnych językach za pomocą bibliotek klienta interfejsu API Google, przeczytaj artykuł Odczytywanie i zapisywanie wartości komórek.
W tych przykładach symbol SPREADSHEET_ID
oznacza miejsce, w którym należy podać identyfikator arkusza kalkulacyjnego. Można go znaleźć w adresie URL arkusza. Zakresy, do których mają być zapisywane dane, są określane za pomocą notacji A1. Przykładowy zakres to Arkusz1!A1:D5.
Zapisywanie pojedynczego zakresu
Poniższy przykładowy kod spreadsheets.values.update
pokazuje, jak zapisać wartości w zakresie, zaczynając od nowego, pustego arkusza kalkulacyjnego. Parametr zapytania ValueInputOption
jest wymagany i określa, czy zapisywane wartości są analizowane (np. czy ciąg znaków jest konwertowany na datę).
Treść żądania to obiekt ValueRange
, który opisuje wartości zakresu do zapisania. Pole majorDimension
wskazuje, że tablice są listami wartości uporządkowanymi według wierszy. Istniejące wartości w zakresie docelowym zostaną zastąpione.
Protokół żądania jest widoczny poniżej.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:D5", "majorDimension": "ROWS", "values": [ ["Item", "Cost", "Stocked", "Ship Date"], ["Wheel", "$20.50", "4", "3/1/2016"], ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"] ], }
Odpowiedź składa się z obiektu UpdateValuesResponse
, takiego jak ten:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:D5",
"updatedRows": 5,
"updatedColumns": 4,
"updatedCells": 20,
}
Wynikowy arkusz będzie wyglądać tak:
A | B | C | D | |
1 | Element | Koszt | W magazynie | Data wysyłki |
2 | Diabelski młyn | 20,50 USD | 4 | 01.03.2016 |
3 | Drzwi | 15 HKD | 2 | 15.03.2016 r. |
4 | Silnik | 100 zł | 1 | 20.03.2016 r. |
5 | Sumy | 135,5 USD | 7 | 20.03.2016 r. |
Selektywne zapisywanie w zakresie
Podczas zapisywania wartości w zakresie można uniknąć zmiany niektórych istniejących komórek, ustawiając odpowiednie elementy tablicy na null
. Możesz też wyczyścić komórkę, wpisując w niej pusty ciąg znaków (""
).
Zaczynając od arkusza zawierającego te same dane, które zostały wygenerowane w przykładzie powyżej, poniższy przykładowy kod spreadsheets.values.update
pokazuje, jak zapisać wartości w zakresie B1:D4, selektywnie pozostawiając niektóre komórki bez zmian, a inne czyszcząc. Parametr zapytania ValueInputOption
jest wymagany i określa, czy zapisywane wartości są analizowane (np. czy ciąg znaków jest konwertowany na datę).
Treść żądania to obiekt ValueRange
, który opisuje wartości zakresu do zapisania. Pole majorDimension
oznacza, że tablice są listami wartości uporządkowanymi według kolumn.
Protokół żądania jest widoczny poniżej.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!B1", "majorDimension": "COLUMNS", "values": [ [null,"$1","$2", ""], [], [null,"4/1/2016", "4/15/2016", ""] ] }
Pole values
zawiera listę zmian wprowadzonych w poszczególnych kolumnach zakresu. Pierwsza tablica wskazuje, że komórka B1 ma pozostać bez zmian (ze względu na element tablicy null
), a komórka B4 ma zostać wyczyszczona (pusty ciąg znaków). Wartości komórek B2 i B3 zostaną zaktualizowane. Trzecia tablica wykonuje te same operacje w kolumnie D, a druga pusta tablica wskazuje, że kolumna C ma pozostać bez zmian.
Odpowiedź składa się z obiektu UpdateValuesResponse
, takiego jak ten:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!B1:D5",
"updatedRows": 3,
"updatedColumns": 2,
"updatedCells": 6,
}
Wynikowy arkusz będzie wyglądać tak:
A | B | C | D | |
1 | Element | Koszt | W magazynie | Data wysyłki |
2 | Diabelski młyn | 1 USD | 4 | 01.04.2016 |
3 | Drzwi | 2 PLN | 2 | 15.04.2016 r. |
4 | Silnik | 1 | ||
5 | Sumy | 3 USD | 7 | 15.04.2016 r. |
Pamiętaj, że wiersz „Sumy”, mimo że nie został bezpośrednio zmieniony przez tę prośbę, ulegnie zmianie, ponieważ jego komórki zawierają formuły, które zależą od zmienionych komórek.
Zapisywanie w wielu zakresach
Poniższy przykładowy kod spreadsheets.values.batchUpdate
pokazuje, jak zapisać wartości w zakresach Arkusz1!A1:A4 i Arkusz1!B1:D2, zaczynając od pustego arkusza. Istniejące wartości w zakresie docelowym zostaną zastąpione. Treść żądania składa się z obiektu ValueInputOption
, który pokazuje, jak interpretować dane wejściowe, oraz z tablicy obiektów ValueRange
odpowiadających każdemu zapisanemu zakresowi. Pole majorDimension
określa, czy tablice mają być interpretowane jako tablice kolumn czy wierszy.
Protokół żądania jest widoczny poniżej.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values:batchUpdate
{ "valueInputOption": "VALUE_INPUT_OPTION", "data": [ { "range": "Sheet1!A1:A4", "majorDimension": "COLUMNS", "values": [ ["Item", "Wheel", "Door", "Engine"] ] }, { "range": "Sheet1!B1:D2", "majorDimension": "ROWS", "values": [ ["Cost", "Stocked", "Ship Date"], ["$20.50", "4", "3/1/2016"] ] } ] }
Odpowiedź składa się z obiektu, który zawiera listę zaktualizowanych statystyk komórek, oraz tablicy obiektów UpdateValuesResponse
, po jednym dla każdego zaktualizowanego zakresu. Na przykład:
{ "spreadsheetId":SPREADSHEET_ID
, "totalUpdatedRows": 4, "totalUpdatedColumns": 4, "totalUpdatedCells": 10, "totalUpdatedSheets": 1, "responses": [ { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A1:A4", "updatedRows": 4, "updatedColumns": 1, "updatedCells": 4, }, { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!B1:D2", "updatedRows": 2, "updatedColumns": 3, "updatedCells": 6, } ], }
Wynikowy arkusz będzie wyglądać tak:
A | B | C | D | |
1 | Element | Koszt | W magazynie | Data wysyłki |
2 | Diabelski młyn | 20,50 USD | 4 | 01.03.2016 |
3 | Drzwi | |||
4 | Silnik | |||
5 |
Zapisywanie wartości bez analizowania
Poniższy przykładowy kod, który zaczyna się od pustego arkusza, pokazuje, jak zapisać wartości w zakresie Arkusz1!A1:E1, ale używa parametru zapytania RAW
ValueInputOption
, aby zapobiec parsowaniu zapisanych ciągów jako formuł, wartości logicznych lub liczb.spreadsheets.values.update
Pojawiają się one w arkuszu jako ciągi znaków, a tekst jest wyrównany do lewej.
Treść żądania to obiekt ValueRange
, który opisuje wartości zakresu do zapisania. Pole majorDimension
wskazuje, że tablice są listami wartości uporządkowanymi według wierszy. Istniejące wartości w zakresie docelowym zostaną zastąpione.
Protokół żądania jest widoczny poniżej.
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1?valueInputOption=RAW
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Data", 123.45, true, "=MAX(D2:D4)", "10"] ], }
Odpowiedź składa się z obiektu UpdateValuesResponse
, takiego jak ten:
{
"spreadsheetId": SPREADSHEET_ID
,
"updatedRange": "Sheet1!A1:E1",
"updatedRows": 1,
"updatedColumns": 5,
"updatedCells": 5,
}
Wynikowy arkusz będzie wyglądać tak:
A | B | C | D | E | |
1 | Dane | 123,45 | PRAWDA | =MAX(D2:D4) | 10 |
2 |
Zwróć uwagę, że „TRUE” jest wyśrodkowane i jest wartością logiczną, natomiast „123.45” jest wyrównane do prawej, ponieważ jest liczbą, a „10” jest wyrównane do lewej, ponieważ jest ciągiem znaków. Formuła nie jest analizowana i jest wyświetlana jako ciąg znaków.
Dołączanie wartości
Zacznij od arkusza podobnego do tabeli poniżej:
A | B | C | D | |
1 | Element | Koszt | W magazynie | Data wysyłki |
2 | Diabelski młyn | 20,50 USD | 4 | 01.03.2016 |
3 |
Poniższy przykładowy kodspreadsheets.values.append
pokazuje, jak dodać 2 nowe wiersze wartości, zaczynając od wiersza 3. Parametr zapytania ValueInputOption
jest wymagany i określa, czy zapisywane wartości są analizowane (np. czy ciąg znaków jest konwertowany na datę).
Treść żądania to obiekt ValueRange
, który opisuje wartości zakresu do zapisania. Pole majorDimension
wskazuje, że tablice są listami wartości uporządkowanymi według wierszy.
Protokół żądania jest widoczny poniżej.
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID
/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION
{ "range": "Sheet1!A1:E1", "majorDimension": "ROWS", "values": [ ["Door", "$15", "2", "3/15/2016"], ["Engine", "$100", "1", "3/20/2016"], ], }
Odpowiedź składa się z obiektu AppendValuesResponse
, takiego jak ten:
{ "spreadsheetId":SPREADSHEET_ID
, "tableRange": "Sheet1!A1:D2", "updates": { "spreadsheetId":SPREADSHEET_ID
, "updatedRange": "Sheet1!A3:D4", "updatedRows": 2, "updatedColumns": 4, "updatedCells": 8, } }
Wynikowy arkusz będzie wyglądać tak:
A | B | C | D | |
1 | Element | Koszt | W magazynie | Data wysyłki |
2 | Diabelski młyn | 20,50 USD | 4 | 01.03.2016 |
3 | Drzwi | 15 HKD | 2 | 15.03.2016 r. |
4 | Silnik | 100 zł | 1 | 20.03.2016 r. |
5 |