PHP google sheets api 書式を設定する repeatCell()がいい

php google client api repeatcell google

筆者はどちらかというとアンチExcelでGoogle SpreadSheet使っています。理由は1つのデータを複数で参照・編集できるから。古い会社では未だにExcelファイルをメールで添付して、更新したらまたメール添付で渡し、どれが最新かもわからずという状況・・・古い会社の皆さん、暇だからって時間潰しは止めましょう。

話を元に戻して、セルの書式を設定したい時ありますよね。手作業ではなくプログラム的に。
今回は数値で\マーク、3桁カンマ,、小数点2桁に一気に設定します。
請求書とか右端をお金にする的なやつです。

スポンサーリンク

0.Google Client Libraryを入れておく

事前にgoogle client libraryを入れておきましょう

JavaScript quickstart  |  Google Sheets  |  Google for Developers

1.repeatCell

Requests  |  Google Sheets  |  Google for Developers

updateCellsを使ってもうまくいかず、repeatCellを使うのが良いです。
基本は下記です。 range, cell, fields(数値書式を更新)


//request objects
$reqs = array();

$reqs[] = new Google_Service_Sheets_Request(array(
 'repeatCell'=>array(
  'range'=>array(
  ),
  'cell'=>array(
  ),
  'fields'=>'userEnteredFormat.numberFormat', 
 }
));

1.1 rangeオブジェクト

どのシートのどの範囲を更新するかを設定します。

Other  |  Google Sheets  |  Google for Developers
  • sheetId
    Spreadsheet内のsheetIdです。取得は↓に書きます
  • startRowIndex
    開始行index
  • endRowIndex
    終了行index
  • startColumnIndex
    開始列index (AB..ではなく0,1…)
  • endColumnIndex
    終了列index
$service = new Google_Service_Sheets($gclient);
//スプレッドシート取得
$sheets = $service->spreadsheets->get($fileid);

//シート取得
foreach($sheets as $sh ){
  $sheetid = $sh->properties->sheetId;
}

1.2 cell

rangeで範囲は決めたので、書式設定を行います。


'cell'=>array(
  'userEnteredFormat' => array(
    'numberFormat' => array(
      'type'=>'NUMBER',
      'pattern'=>'[$\-411]#,##0.00]',
    ),
  )
),

1.3 fields

更新するフィールドは何かを設定します。今回はuserEnteredFormat.numberFormatが更新対象です。cellに設定しても、fieldsで設定していないと更新されません。

'fields'=>'userEnteredFormat.numberFormat'

2. 参考リンク

Date & number formats  |  Google Sheets  |  Google for Developers

コメント

タイトルとURLをコピーしました