2015-04-29 16 views
7

Bảng tính Google không có chức năng "chèn ô cắt" như trong Excel.Bảng tính Google - Chèn các ô/hàng đã cắt/sao chép

Giả sử tôi đã chọn A4 đến B5, nhấn Ctrl + X.
Sau đó, tôi đã chuyển vùng chọn sang A2.
Bây giờ tôi muốn "chèn ô cắt", có thể bằng cách chèn ô trống và moving phạm vi chấm chấm vào A2.
screenshot

Có cách nào để thực hiện việc này bằng JavaScript trên your own menu không?

ví dụ:

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 
} 
+0

Tập lệnh ứng dụng không thể nghe bàn phím hoặc kiểm tra bảng tạm. – Kriggs

+0

Vâng, nhưng không chỉ trên khay nhớ tạm. Nó được đánh dấu bằng đường viền chấm chấm trên trang tính. Vì vậy, tôi đã chỉ tự hỏi nếu có một cách để có được phạm vi đó. – Aximili

+5

Google Trang tính không có khả năng di chuyển hàng (hoặc cột), tương đương với cắt và chèn. Chọn * toàn bộ * hàng, di chuyển con trỏ qua hàng ** số **, con trỏ thay đổi thành bàn tay và kéo. –

Trả lời

0

Tôi nghĩ, bạn có thể tách chức năng.

Copy: sử dụng getRange với getValue: liên kết =>https://developers.google.com/apps-script/reference/spreadsheet/sheet

dữ liệu Xóa: sử dụng getRange với setValue = trống

dụ:

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(""); 

Bạn có thể sử dụng metho CopyTo

ví dụ:

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

Cảm ơn Hann. Nhưng làm thế nào để bạn có được phạm vi được lựa chọn được cắt/sao chép? Vui lòng xem câu hỏi được cập nhật tôi đã thêm một ví dụ. – Aximili

0

Bạn có cả hai phương pháp, hãy kiểm tra trong lớp Range.

moveTo(target)

Cắt và dán (cả hai định dạng và giá trị) từ cự ly này đến phạm vi mục tiêu.

copyTo(destination)

Sao chép dữ liệu từ một loạt các tế bào khác phạm vi của các tế bào. Cả hai giá trị và định dạng được sao chép.

Edit:

Để hoàn thành chức năng bạn sẽ phải sử dụng thêm:

insertRowsAfter(afterPosition, howMany) trong lớp Spreadsheet

Chèn một số hàng sau khi vị trí hàng nhất định.

getActiveRange() với getRow() để kiểm tra nơi là lựa chọn tại địa chỉ:

Trả về phạm vi của các tế bào mà hiện tại được coi là tích cực.Điều này thường có nghĩa là phạm vi mà người dùng đã chọn trong trang tính đang hoạt động, nhưng trong một hàm tùy chỉnh, nó đề cập đến ô được tính toán lại một cách tích cực.

Vì bạn không có quyền truy cập trực tiếp vào khay nhớ tạm, bạn sẽ phải thiết lập thanh bên hoặc modelessDialog, yêu cầu phạm vi để sao chép và nó sẽ dán vào khu vực đã chọn, hoặc cách khác xung quanh, dán khu vực được chọn hiện tại vào ROW được nhập.

+0

Cảm ơn Kriggs. Tôi nghĩ vấn đề vẫn là: Làm thế nào để các tế bào bị cắt? Tôi đã thêm một ví dụ ở trên. Cảm ơn! – Aximili

10

Để đạt được tính năng chèn cắt ô trong trang tính google, bạn chỉ cần sử dụng kéo và thả. Đầu tiên đánh dấu (các) hàng bạn muốn di chuyển rồi di chuột qua số hàng (bạn sẽ thấy biểu tượng bàn tay ); sau đó, giữ nhấp chuột trái và giữ chuột qua các số hàng, bạn sẽ thấy một đường tối nơi chèn sẽ diễn ra. Bỏ nút chuột và thì đấy.

enter image description here

+1

@TT Giữ CTRL trước khi bạn nhả chuột trái – Enora

+0

@Enora, Wow. Cảm ơn vì đã khiến tôi nhìn lại lần thứ hai. ** Giữ CTRL và kéo vùng chọn ** hoạt động! Tôi cũng đọc lại câu trả lời này và thấy nó hoạt động tốt - điều quan trọng là để ** lấy vùng chọn từ vùng hàng **. Cảm ơn bạn! –

+0

@TT bằng cách này, giữ CTRL hoạt động ở mọi nơi: thử nó trong trình soạn thảo văn bản như notepad, hoặc trong trình thám hiểm tệp để sao chép tệp/thư mục – Enora

Các vấn đề liên quan