筆者はどちらかというとアンチ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
コメント