Google API で NULL をセットする

2020-11-06PHPGoogle

Google sheets API を使ってスプレッドシートを更新するときに、セルに NULL 値をセットしたい場面があったときに使ったやつ。

スプレッドシートに、範囲指定して複数の値を書き込む場合には、範囲内のすべてのセルに値をセットしないといけない。範囲内に更新したくないセルがあって、このセルを飛ばして複数のセルを更新したいときに使える。

Google\Model::NULL_VALUE

value にこれをセットすると、値を上書しない、そのままの状態にしといてくれる。

ID 2 の Name の値を更新、 Data2 を飛ばして、Data3 に値を書き込むとき。

before

例えば、以下のような配列を使って update すると、Invalid values[2][0]: struct_value というエラーが出る。配列の 3 番目の要素がないから。

$var[0] = 2;
$val[1] = 'bbbb';
$val[2] = '2020/08/06';
$val[4] = '2020/11/04';

値を書き込みたくないセルの値に NULL をセットする。

use Google;

$val[1] = 'bbbb';
$val[2] = Google\Model::NULL_VALUE;
$val[3] = Google\Model::NULL_VALUE;
$val[4] = '2020/11/04';

$value = new Google_Service_Sheets_ValueRange();
$value->setValues(['values' => $val]);
$params = [
    'valueInputOption' => 'USER_ENTERED'
];
$this->sheet->spreadsheets_values->update($this->spreadsheetId, $range, $value, $params);
after
[2]=>
    array(5) {
      [0]=>
      string(1) "2"
      [1]=>
      string(4) "bbbb"
      [2]=>
      string(10) "2020/08/06"
      [3]=>
      string(0) ""
      [4]=>
      string(10) "2020/11/04"
    }

NULL_VALUE という定数は、google-api-php-client の Model.php で定義されている。

const NULL_VALUE = "{}gapi-php-null";

Posted by Agopeanuts