これも GET だけでできるのでお手軽ー
説明よりもコードを読んでもらったほうが早い気がする。
配列リファレンスの中の配列リファレンス、てな形でデータが取得できるので、csv にするなりなんなり後は自由自在ですね(力量による)
ちょっと詰まったところ
この API は取得するセルの範囲を指定する必要があります。
シート1!A1:C2
こんな感じで。
もう一段楽をするためには、値が入っているセルの範囲を取得する必要があります。
値が入っているセルの行と列の最大値が欲しい・・・!
Google Apps Script だと getLastRow()
とか getLastColumn()
みたいなやつ。
となると、API でアクセスして、情報が入っている最後の Row(行)と Column(列)を把握して・・・あれー、そんな関数見当たらないぞー
困ったときは Google 先生、そして stack overflow。
You can set the range to "A2:D" and this would fetch as far as the last data row in your sheet.
あ、そういう・・・列さえ把握しておけばいい的な・・・
で解決したのでした。
Perl で Gogle Sheet API をつかってセルの値を取得する
以下がコードです。
情報をとるときには 2 つの方法 values.get
, values.batchGet
があるので、太っ腹に両方やってみました。
#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use HTTP::Tiny; use JSON; use URI::QueryParam; use URI; use utf8; my $SPREADSHEET_ID = '1sVNSpvtWPPkv5Qnb0tifYHpKMxaehxj5ChAeQ1G1kgA'; my $ACCESS_TOKEN = ''; my $GOOGLE_SHEET_API = "https://sheets.googleapis.com/v4/spreadsheets/"; my $bearer = join " ", ( 'Bearer', $ACCESS_TOKEN ); values_get(); values_batchGet(); # Method: spreadsheets.values.get # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/get sub values_get { my $ht = HTTP::Tiny->new( default_headers => { Authorization => $bearer, } ); my $SHEET_URI = $GOOGLE_SHEET_API . $SPREADSHEET_ID . '/values/シート1!A1:C'; my $URI = URI->new($SHEET_URI); my $res = $ht->get($URI); my $data = decode_json( $res->{content} ); print Dumper $data->{values}; } # Method: spreadsheets.values.batchGet # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchGet sub values_batchGet { my $ht = HTTP::Tiny->new( default_headers => { Authorization => $bearer, } ); my $URI = URI->new( 'https://sheets.googleapis.com/v4/spreadsheets/' . $SPREADSHEET_ID . '/values:batchGet' ); $URI->query_param( ranges => 'シート1!A1:C'); my $res = $ht->get($URI); my $data = decode_json( $res->{content} ); print Dumper $data->{valueRanges}->[0]->{values}; }