Google Sheets API v4(Java)を使用して、
スプレットシートのシートにスライサーを追加・更新・削除する方法
についてご紹介します。
スライサーとは、セルの表示方法を自由に変更できる機能です。
フィルタ機能と似ていますが、表だけではなく、ピボットテーブル、グラフ等も
フィルタリングできるのが特徴です。
フィルタリングした結果の表示は保存されず、シートを再読み込みなどすると
リセットされてしまうのでご注意ください。
スプレットシートからは、メニュー:「データ」 ⇨ 「スライサーを追加」
でスライサーの追加ができます。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する
を参照ください。
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
その他のGoogle Sheets APIは、下記の記事を参照ください。
⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた
No | 目次 | ||
---|---|---|---|
1 | スライサーの追加 | ||
1 | スライサーのサイズと配置場所 | ||
2 | スライサーの仕様 | ||
1 | タイトルのテキスト形式の設定 | ||
2 | スライサーのデータ範囲 | ||
3 | スライサーのフィルタリング基準 | ||
2 | スライサーの更新 | ||
3 | スライサーの削除 |
1. スライサーの追加
スライサーを追加します。
追加時は下記3つを設定します。
・スライサー(オブジェクト)のID
・スライサーのサイズと配置場所
・スライサーの仕様
スライサーIDはすでに登録済みのオブジェクトIDがあるとエラーになります。
指定しなければ自動採番されます。
サンプル コード
public Request addSlicer(Integer sheetId) {
Request request = new Request();
Slicer slicer = new Slicer();
//スライサー(オブジェクト)のID。省略時は自動採番
slicer.setSlicerId(1);
//スライサーのサイズと配置場所を設定
slicer.setPosition(getEmbeddedObjectPosition(sheetId));
//スライサーの仕様を設定
slicer.setSpec(getSlicerSpec(sheetId));
AddSlicerRequest r = new AddSlicerRequest();
r.setSlicer(slicer);
request.setAddSlicer(r);
return request;
}
1.1. スライサーのサイズと配置場所
EmbeddedObjectPositionクラスで指定します。
配置する位置は、指定したセル(右下)からのオフセット値(ピクセル)になります。
例えば、
4行目D列 : setRowIndex(3)、setColumnIndex(3)
(x,y)=(0,0) : setOffsetXPixels(0)、setOffsetYPixels(0)
と指定した場合、4列目D列のセルの右下に配置されます。
スライサーはデータ範囲と同じセルに配置する必要があるため、
setSheetId()、setNewSheet()は使用できません。
サンプル コード
public EmbeddedObjectPosition getEmbeddedObjectPosition(Integer sheetId) {
EmbeddedObjectPosition pos = new EmbeddedObjectPosition();
OverlayPosition overlay = new OverlayPosition();
//起点となるセルの指定
GridCoordinate grid = new GridCoordinate();
grid.setSheetId(sheetId); //配置するシートID
grid.setRowIndex(10); //開始行(0スタート)
grid.setColumnIndex(10); //開始列(0スタート)
overlay.setAnchorCell(grid); //オブジェクトが固定されているセル。
//起点となるセルからのオフセット値
overlay.setOffsetXPixels(0); //開始X座標。
overlay.setOffsetYPixels(0); //開始Y座標。
// overlay.setHeightPixels(50); //高さ。省略時は371px
// overlay.setWidthPixels(50); //幅。省略時は600px
pos.setOverlayPosition(overlay); //オブジェクトがグリッドの上にオーバーレイされる位置。
return pos;
}
1.2. スライサーの仕様
SlicerSpecクラスでスライサーの仕様を設定します。
タイトルの水平方向の配置はsetHorizontalAlignment()で指定できます。
alignment | 水平方向の配置 |
---|---|
LEFT | 左寄せ |
CENTER | 中央 |
RIGHT | 右寄せ |
サンプル コード
public SlicerSpec getSlicerSpec(Integer sheetId) {
SlicerSpec spec = new SlicerSpec();
//スライサーのタイトル
spec.setTitle("test");
//スライサーのタイトルのテキスト形式
spec.setTextFormat(getTextFormat());
//スライサーのタイトルの水平方向の配置(デフォルトはLEFT)
spec.setHorizontalAlignment("CENTER");
//ピボットテーブルに適用するか?
spec.setApplyToPivotTables(true);
//スライサーの背景色
spec.setBackgroundColor(new Color().setBlue(1.0f)); //または setBackgroundColorStyle
//フィルターが適用されるデータテーブル内の列インデックス
spec.setColumnIndex(0);
//スライサーのデータ範囲
spec.setDataRange(getGridRange(sheetId));
//スライサーのフィルタリング基準
spec.setFilterCriteria(getFilterCriteria());
return spec;
}
1.2.1. タイトルのテキスト形式の設定
TextFormatクラスでテキスト形式を設定できます。
スライサーの場合、
下線(setUnderline())と取り消し線(setStrikethrough())は使えません。
サンプル コード
public TextFormat getTextFormat() {
TextFormat format = new TextFormat();
format.setBold(true); //ボールドか?
format.setItalic(true); //イタリックか?
format.setFontSize(14); //フォントサイズ
format.setFontFamily("Arial"); //フォントファミリ名
//テキストの色
Color cc = new Color();
cc.setRed(1.0f).setGreen(0f).setBlue(0f);
format.setForegroundColor(cc);
return format;
}
1.2.2. スライサーのデータ範囲
GridRangeクラスでデータ範囲を設定します。
サンプル コード
public GridRange getGridRange(Integer sheetId) {
GridRange range = new GridRange();
range.setSheetId(sheetId); //設定するシートID
range.setStartRowIndex(0); //開始行(0スタート)
range.setEndRowIndex(4); //終了行(1スタート)
range.setStartColumnIndex(0); //開始列(0スタート))
range.setEndColumnIndex(3); //終了列(1スタート)
return range;
}
1.2.3. スライサーのフィルタリング基準
FilterCriteriaクラスでフィルタの内容を設定します。
フィルタリングの設定については、
下記記事に詳細をまとめてますのでこちらを参照ください。
⧉[Google Sheets API] セルに入力規則を設定する
サンプル コード
public FilterCriteria getFilterCriteria(){
FilterCriteria filter = new FilterCriteria();
BooleanCondition con = new BooleanCondition();
List<ConditionValue> values = new ArrayList<>();
ConditionValue value = new ConditionValue();
value.setUserEnteredValue("2023-03-01"); //「2023-03-01」以降の日
values.add(value);
con.setValues(values); //条件の値。
con.setType("DATE_AFTER"); //「次より後の日付」を指定
filter.setCondition(con);
}
2. スライサーの更新
設定済みのスライサーを更新します。
スライサーの更新時に下記を指定します。
・更新するスライサー(オブジェクト)のID
・更新するスライサーの仕様
更新するスライサーの仕様は、「1. スライサーの追加」と同じSlicerSpecクラスを使います。
内容はそちらをご覧ください。
サンプル コード
public Request updateSlicerSpec(Integer sheetId) {
Request request = new Request();
UpdateSlicerSpecRequest r = new UpdateSlicerSpecRequest();
r.setSlicerId(1); //更新するスライサー(オブジェクト)のID
r.setSpec(getSlicerSpec(sheetId)); //更新するスライサーの仕様
request.setUpdateSlicerSpec(r);
return request;
}
3. スライサーの削除
スライサーを削除します。
サンプル コード
public Request deleteEmbeddedObject() {
Request request = new Request();
DeleteEmbeddedObjectRequest r = new DeleteEmbeddedObjectRequest();
r.setObjectId(1); //削除するオブジェクトのID。
request.setDeleteEmbeddedObject(r);
return request;
}
おしまい。。