0
我有兩張不同的紙張,第一張是我所有數據存儲和更改的位置。在更新第一張紙時,它會移至第二張紙上。我試圖弄清楚,如果更新後,我可以從第二張表中移動一行到第二張表格中的另一個表格,基於列Q或列17中的數據。這是我目前擁有的,但它不似乎在移動任何東西。這甚至有可能嗎?我可以移動從其他工作表更新的行嗎?
function onUpdate() {
var sheetNameToWatch = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");;
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());
}
}
謝謝。
好吧,我已經更新了當前腳本:
function onUpdate() {
var sourceSheet = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() === sourceSheet && range.getColumn() === columnNumberToWatch && checkMatch(range.getValue(), valueToWatch) === true) {
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());
}
}
function checkMatch(value, array) {
for (i in array) {
if (value === array[i]) {
return(true);
}
}
}
好吧,
我想更多的指定一點吧:
function onEdit() {
var sourceSheet = "Raw Data";
var columnNumberToWatch = 17; // column A = 1, B = 2, etc.
var valueToWatch = ["Full", "Partial", "Process", "Conditional", "Fail", "Exemption"];
var sheetNameToMoveTheRowTo = (valueToWatch + " Certification");
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
var cert = range.getValue();
if (valueToWatch.indexOf(cert) === sourceSheet && range.getColumn() === columnNumberToWatch && checkMatch(range.getValue(), valueToWatch) === true) {
var sheetNameToMoveTheRowTo = (cert + " Certification");
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());
}
}
function checkMatch(value, array) {
for (i in array) {
if (value === array[i]) {
return(true);
}
}
}
通過定義證書,並試圖更清楚地定義valueToWatch的數組。
感謝您的答覆。我需要在第二個數組中定義數組還是值?我不會認爲[]應該識別數組。但是,沒有任何內容移動到相應的選項卡上。任何額外的想法? – baldalbino
您是否設置了onEdit觸發器? –
你可以調用你的函數onEdit()而不是onUpdate()。 –