將行添加到源作業表時,需要將行從源作業表移動到目標作業表。然后洗掉源作業表行。
這就是我所擁有的,但我不斷收到錯誤訊息:
function moveValuesOnly () {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var sourceSheet = ss.getSheetByName("Source");
var source = sourceSheet.getLastRow();
var destSheet = ss.getSheetByName("Destination");
var destRange = destSheet.getRange(destSheet.getLastRow() 1,1);
source.copyTo (destRange, {contentsOnly: true});
source.clear ();
}
uj5u.com熱心網友回復:
您可以通過以下方式嘗試您的功能:
function moveValuesOnly() {
var ss = SpreadsheetApp.getActive();
var sh = ss.getSheetByName("Sheet0");
let lr = sh.getLastRow();
var rg = sh.getRange(lr,1,1,sh.getLastColumn());
var dsh = ss.getSheetByName("Sheet1");
var drg = dsh.getRange(dsh.getLastRow() 1, 1);
rg.copyTo(drg, { contentsOnly: true });
sh.deleteRow(lr);
}
但是除非插入行是用戶編輯,否則該函式不會被“INSERT_ROW”型別的 onChange 事件呼叫。
例如:
如果您創建一個 onChange 型別的可安裝 onMyChange 觸發器,則函式插入行將??不會啟動 moveValuesOnly,因為 onChange 事件僅在用戶插入行時觸發,而不是在公式或腳本插入行時觸發。
function onMyChange(e) {
Logger.log(JSON.stringify(e));
if(e.changeType == "INSERT_ROW") {
moveValuesOnly();
}
}
function insertRow() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
sh.insertRowAfter(1);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378454.html
