さくっとやりました!と言いたいところなのですが
Google Sheet API 叩き職人の朝は早い
— sironekotoro (@sironekotoro) 2020年11月23日
「'status' => '400',
'reason' => 'Bad Request',
これが出てからが本番ってことさ」
この道3ヶ月の sironekotoro はそう言って笑う
3 ヶ月じゃないな 2 ヶ月くらいだな。
Google Sheet API でセルの内容を書き換えるメソッドは 3 つあるんですが、自分の用途に合致した values/batchUpdate
を使いました。
後、Qiita のこの記事がとても参考になりました。
こんな感じでセルを埋めることができます。
#!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use HTTP::Tiny; use JSON; use URI; use utf8; my $ACCESS_TOKEN = ''; my $SPREADSHEET_ID = '1sVNSpvtWPPkv5Qnb0tifYHpKMxaehxj5ChAeQ1G1kgA'; my $GOOGLE_SHEET_API = "https://sheets.googleapis.com/v4/spreadsheets/"; my $bearer = join " ", ( 'Bearer', $ACCESS_TOKEN ); # Method: spreadsheets.values.batchUpdate | Sheets API # https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/batchUpdate values_batchUpdate(); sub values_batchUpdate { my $ht = HTTP::Tiny->new( default_headers => { Authorization => $bearer, } ); my $SHEET_URI = $GOOGLE_SHEET_API . $SPREADSHEET_ID . '/values:batchUpdate'; my $URI = URI->new($SHEET_URI); my $response = $ht->request( 'POST', $URI, { content => encode_json( { valueInputOption => 'USER_ENTERED', data => [ { range => 'シート1!A1', values => [ [ 200, 100, '=A1+B1' ], [ 'hoge', '', 'fuga' ] ] } ], includeValuesInResponse => 'true', responseValueRenderOption => 'UNFORMATTED_VALUE', responseDateTimeRenderOption => 'FORMATTED_STRING', } ) }, ); # print Dumper $response; }