![](/img/trans.png)
[英]Copy fro Sheet A to paste in Sheet B's last row google app script
[英]Copy Row From Sheet A and append it in Sheet B in Google Sheet
我有包含幾行的工作表 A,當單擊復選框時,它應該復制到工作表 B 中。
表A
當我選擇一個復選框時,我希望該記錄復制到工作表 B 中,並保留在工作表 A 中,只有 ID 和名稱
這是我寫的代碼
function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "SheetA" && r.getColumn() == 8 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn() - 1;
var targetSheet1 = ss.getSheetByName("SheetB");
var target1 = targetSheet1.getRange(targetSheet1.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target1);
Browser.msgBox("Your Record Submitted");
s.deleteRow(row);
}
}
提前致謝
我相信你的目標如下。
s.getRange(row, 1, 1, numColumns).moveTo(target1);
,該行的所有值都被移動。 這樣,列“A”和“B”的值也被刪除。 而且,通過s.deleteRow(row);
,該行被刪除。當以上幾點反映到你的腳本中時,它變成如下。
function onEdit(event) {
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if (s.getName() == "SheetA" && r.getColumn() == 8 && r.getValue() === true) {
var row = r.getRow();
var numColumns = s.getLastColumn()-1;
var targetSheet1 = event.source.getSheetByName("SheetB");
var target1 = targetSheet1.getRange(targetSheet1.getLastRow() + 1, 1);
// I modified below script.
var range = s.getRange(row, 1, 1, numColumns);
if (!range.getValues()[0].every(e => e.toString() == "")) { // Added
range.copyTo(target1);
range.offset(0, 2, 1, 5).clearContent();
range.offset(0, 7).uncheck();
Browser.msgBox("Your Record Submitted");
}
}
}
range.offset(0, 2, 1, 6).clearContent();
使用, range.offset(0, 7).uncheck();
不需要使用。 但在這種情況下,復選框的值也被刪除。 所以在這個修改中,我使用了uncheck()
。 這樣,復選框的值更改為FALSE
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.