Google API で NULL をセットする
Google sheets API を使ってスプレッドシートを更新するときに、セルに NULL 値をセットしたい場面があったときに使ったやつ。
スプレッドシートに、範囲指定して複数の値を書き込む場合には、範囲内のすべてのセルに値をセットしないといけない。範囲内に更新したくないセルがあって、このセルを飛ばして複数のセルを更新したいときに使える。
Google\Model::NULL_VALUE
value にこれをセットすると、値を上書しない、そのままの状態にしといてくれる。
ID 2 の Name の値を更新、 Data2 を飛ばして、Data3 に値を書き込むとき。
例えば、以下のような配列を使って 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);
[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";