web-dev-qa-db-ja.com

Googleスプレッドシート-切り取り/コピーしたセル/行の挿入

Googleスプレッドシートには、Excelのような「カットセルを挿入する」機能はありません。

A4からB5を選択し、Ctrl + Xを押したとします。
次に、選択範囲をA2に移動しました。
今、おそらく「空白のセルを挿入して 移動 A2の点線範囲を挿入することにより、「カットセルを挿入」したいです。
screenshot

独自のメニュー でJavaScriptを使用して行う方法はありますか?

例えば。

function insertCutOrCopiedCells(){
  var SS = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SS.getActiveSheet();
  var cell = sheet.getActiveCell();

  // How do you get the cells being cut/copied? (ie. A4 to B5)

  // We can then insert empty cells (2 cols 2 rows) at the selection (A2)
  // and move the cut cells (A4 to B5) there
}
13
Aximili

グーグルシートでカットセルの挿入機能を実現するには、単にドラッグアンドドロップを使用します。最初に移動する行を強調表示してから、行番号の上にマウスを置きます(手のアイコンが表示されます)。次に、左クリックしてマウスを行番号の上に置くと、挿入が行われる場所に暗い線が表示されます。マウスボタンを離して放します。

enter image description here

20
Mike

両方のメソッドがあり、クラスでチェックしてください Range

moveTo(target)

この範囲からターゲット範囲へのカットアンドペースト(形式と値の両方)。

copyTo(destination)

ある範囲のセルから別の範囲のセルにデータをコピーします。値とフォーマットの両方がコピーされます。

編集:

機能を完了するには、以下も使用する必要があります。

クラスSpreadsheetのinsertRowsAfter(afterPosition, howMany)

指定された行位置の後に複数の行を挿入します。

そして

getActiveRange()getRow()を使用して、選択範囲がどこにあるかを確認します。

現在アクティブと見なされているセルの範囲を返します。これは通常、ユーザーがアクティブシートで選択した範囲を意味しますが、カスタム関数ではアクティブに再計算されるセルを指します。

クリップボードに直接アクセスできないため、サイドバーまたはmodelessDialogを設定する必要があります。これは、コピー元の範囲を要求し、選択した領域に貼り付けるか、またはその逆です。現在選択されている領域を入力された行に貼り付けます。

0
Kriggs

機能を分離できると思います。

コピー:getValueでgetRangeを使用:link => https://developers.google.com/apps-script/reference/spreadsheet/sheet

データの削除:getValueをsetValue = blankで使用します

例:

var Spreadsheet=
 SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName("number1"); 
 var value = Spreadsheet.getRange(1,0).getValue();  // copy  
 Spreadsheet.getRange(1,1).setValues(value); // insert
 Spreadsheet.getRange(1,0).setValues("");

Metho copyToを使用できます

例:

var sheet = SpreadsheetApp.getActiveSheet();
 sheet.getRange("A:E").copyTo(sheet.getRange("F1"), {contentsOnly:true});
 }
0
Hann