Google Sheets API v4(Java)を使用して、
スプレットシートのセルをcopy and pasteまたはcut and pasteする方法
についてご紹介します。
APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Google Sheets API] Google Sheets API v4をJavaで操作する
を参照ください。
例:requests.add(moveDimension(sheetId)); //実行したいリクエストのMethodを指定
その他のGoogle Sheets APIは、下記の記事を参照ください。
⧉[Google Sheets API] JavaでスプレットシートのメニューとAPIを関連づけてみた
No | 目次 |
---|---|
1 | セルのコピペ(copy and paste) |
2 | セルのカピぺ(cut and paste) |
1. セルのコピペ(copy and paste)
指定したセルの範囲をコピー&ペーストします。
コピーするシート、ペーストするシートは異なるシートでも可能です。
また、特殊貼り付けや、貼り付け(ペースト)の際に行、列を転置して貼り付けることもできます。
setPasteOrientationで貼り付け方法を指定できます。
type | 内容 |
---|---|
normal | 通常の貼り付け |
transpose | 転地して貼り付け |
setPasteTypeで特殊貼り付けを指定できます。
type | 内容 |
---|---|
PASTE_NORMAL | 通常の貼り付け |
PASTE_VALUES | 値のみを貼り付け |
PASTE_FORMAT | 書式のみ貼り付け |
PASTE_FORMULA | 数式のみ貼り付け |
PASTE_CONDITIONAL_FORMATTING | 条件付き書式のみを貼り付け |
PASTE_DATA_VALIDATION | データ入力規制のみ貼り付け |
PASTE_NO_BORDERS | 枠線を除くすべてを貼り付け |
コピー、ペーストする範囲の指定は終了行、列を省略することもできます。
・終了行(setEndRowIndex)を省略した場合、
setStartRowIndexから最後の行まで(空白セルまで)
・終了列(setEndColumnIndex)を省略した場合、
setStartColumnIndexから最後の列まで(空白セルまで)
コピー範囲 < ペースト範囲 の場合
貼り付けの際、コピーの範囲が繰り返しで貼り付けられます。
(スプレットシートを手操作した場合と同じ動きになります)
コピー範囲 > ペースト範囲 の場合
貼り付けの際、コピー範囲の方が有効になり、ペーストの範囲指定(開始位置以外)は無視されます。
サンプル コード
public Request copyPaste(Integer sheetId) {
Request request = new Request();
GridRange src = new GridRange(); //コピーする範囲
src.setSheetId(sheetId); //シートID
src.setStartRowIndex(1); //開始行(0スタート)
src.setEndRowIndex(5); //終了行(1スタート)
src.setStartColumnIndex(1); //開始列(0スタート)
src.setEndColumnIndex(5); //終了列(1スタート)
GridRange dest = new GridRange(); //ペーストする範囲
dest.setSheetId(sheetId); //シートID
dest.setStartRowIndex(5); //開始行(0スタート)
dest.setEndRowIndex(9); //終了行(1スタート)
dest.setStartColumnIndex(5); //開始列(0スタート)
dest.setEndColumnIndex(9); //終了列(1スタート)
CopyPasteRequest r = new CopyPasteRequest();
r.setSource(src); //コピー範囲の情報設定
r.setDestination(dest); //ペースト範囲の情報設定
r.setPasteOrientation("normal"); //貼り付けの仕方。normal:通常, transpose:転地して貼り付け
//r.setPasteType("PASTE_VALUES"); //特殊貼り付け
request.setCopyPaste(r);
return request;
}
2. セルのカピぺ(cut and paste)
指定したセルの範囲をカット&ペーストします。
カットするシート、ペーストするシートは異なるシートでも可能です。
また、特殊貼り付けやもできます。コピペと異なり転地貼り付けはできません。
setPasteTypeで特殊貼り付けを指定できます。
type | 内容 |
---|---|
PASTE_NORMAL | 通常の貼り付け |
PASTE_VALUES | 値のみを貼り付け |
PASTE_FORMAT | 書式のみ貼り付け |
PASTE_FORMULA | 数式のみ貼り付け |
PASTE_CONDITIONAL_FORMATTING | 条件付き書式のみを貼り付け |
PASTE_DATA_VALIDATION | データ入力規制のみ貼り付け |
PASTE_NO_BORDERS | 枠線を除くすべてを貼り付け |
カットする範囲の指定は終了行、列を省略することもできます。
・終了行(setEndRowIndex)を省略した場合、
setStartRowIndexから最後の行まで(空白セルまで)
・終了列(setEndColumnIndex)を省略した場合、
setStartColumnIndexから最後の列まで(空白セルまで)
サンプル コード
public Request cutPaste(Integer sheetId) {
Request request = new Request();
GridRange src = new GridRange(); //カットする範囲
src.setSheetId(sheetId); //シートID
src.setStartRowIndex(1); //開始行(0スタート)
src.setEndRowIndex(5); //終了行(1スタート)
src.setStartColumnIndex(1); //開始列(0スタート)
src.setEndColumnIndex(5); //終了列(1スタート)
GridCoordinate dest = new GridCoordinate(); //ペーストする範囲
dest.setSheetId(sheetId); //シートID
dest.setColumnIndex(6); //座標の列インデックス。(0スタート)
dest.setRowIndex(6); //座標の行インデックス。(0スタート)
CutPasteRequest r = new CutPasteRequest();
r.setSource(src); //カット範囲の情報設定
r.setDestination(dest); //ペースト範囲の情報設定
//r.setPasteType("PASTE_FORMAT"); //特殊貼り付け
request.setCutPaste(r);
return request;
}
実行結果
指定した範囲のセルが切り取られ、指定箇所に貼り付けされました。
おしまい。。