我有一張表格,用于管理客戶檔案的進度。我嘗試了在這里找到的一個腳本,將行從一個選項卡移動到另一個選項卡。我需要修改代碼以滿足我的需要...
此腳本的作用是在輸入特定值時將一行從一個選項卡移動到另一個選項卡(在下面的代碼中,當在第 21 列中輸入單詞“OUI”時,它將一行從“Suivi Clients”移動到“Clients Finalisé”(列“U”))。此腳本適用于在一個條件下移動一整行。
我需要的有點復雜。
首先,“Suivi Clients”和“Clients Finalisé”這 2 個選項卡完全相同,并且包含相同的公式。BHIJKOQRSTX 和 Y 列中的公式為 ARRAYFORMULA。其他列 ACDEFGLMNPUVW 和 Z 為空,必須手動填寫。我之所以解釋這一點,是因為我首先想要的是,只有手動填充列的內容才能從一個選項卡移動到另一個選項卡。
其次,我希望“Suivi Clients”選項卡中的條件為 U 列中的“OUI”或“ANNULé”,以便行從“Suivi Clients”變為“Clients Finalisé”。這將意味著客戶的檔案已支付或取消,因此它已完成。
一旦客戶的行位于“Clients Finalisé”選項卡中,我希望如果我將 U 列的值從“OUI”或“ANNULé”更改為“NON”,該行將回傳到“Suivi Clients”選項卡. 這意味著客戶已決定不再取消或付款存在問題,因此檔案未完全完成。
我可能需要 2 個相同的腳本來調整并分配給每個選項卡。
function onEdit() {
// moves a row from a sheet to another when a magic value is entered in a column
// adjust the following variables to fit your needs
var sheetNameToWatch = "Suivi Clients";
var columnNumberToWatch = 21; // column A = 1, B = 2, etc.
var valueToWatch = "OUI";
var sheetNameToMoveTheRowTo = "Clients Finalisé";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
那是我給那些想看表格的人的表格:
https://docs.google.com/spreadsheets/d/1CPcMx3Dhbqi-zO4D3jYNxO-PGjyW3iTfRo5gRmEB9p4/edit#gid=0
謝謝。
uj5u.com熱心網友回復:
試試這個方法
function onEdit(e) {
var sh = e.source.getActiveSheet();
var rng = e.source.getActiveRange();
if (sh.getName()=='Suivi Clients' && rng.getColumn()==21){
if(rng.getValue()=='OUI' || rng.getValue()=='ANNULé'){
var dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Clients Finalisé')
dest.insertRowBefore(7)
var plage = sh.getRange('C' rng.getRow() ':G' rng.getRow())
plage.copyTo(dest.getRange("C7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('L' rng.getRow() ':N' rng.getRow())
plage.copyTo(dest.getRange("L7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('P' rng.getRow())
plage.copyTo(dest.getRange("P7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('U' rng.getRow() ':W' rng.getRow())
plage.copyTo(dest.getRange("U7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
sh.deleteRow(rng.getRow())
}
}
if (sh.getName()=='Clients Finalisé' && rng.getColumn()==21){
if(rng.getValue()=='NON'){
var dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Suivi Clients')
dest.insertRowBefore(7)
var plage = sh.getRange('C' rng.getRow() ':G' rng.getRow())
plage.copyTo(dest.getRange("C7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('L' rng.getRow() ':N' rng.getRow())
plage.copyTo(dest.getRange("L7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('P' rng.getRow())
plage.copyTo(dest.getRange("P7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
var plage = sh.getRange('U' rng.getRow() ':W' rng.getRow())
plage.copyTo(dest.getRange("U7"), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false)
sh.deleteRow(rng.getRow())
}
}
// other onEdit here
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463293.html
