[英]How to change the if statement to for statement without affecting the outcome in google apps script?
你好,
每當提交或更新訂單時,我想將來自五個客戶的訂單復制到訂單歷史記錄表中。 這是我的代碼:
function onEdit(e){
const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'HH:mm:ss');
var ss = SpreadsheetApp.getActiveSheet ();
var direction = SpreadsheetApp.Direction
var aLast = ss.getRange("I"+(ss.getLastRow()+1)).getNextDataCell(direction.UP).getRow()
var destRange = ss.getRange(aLast+1,9);
if (e.range.columnStart == 6 && e.range.rowStart >= 4) {
if (e.value == 'Update' || e.value == 'Submit') {
e.range.offset(0, 1).setValue(dt);
if(e.range.rowStart = 4) {
var order1 = ss.getRange ("A4:G4");
order1.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart = 5){
var order2 = ss.getRange ("A5:G5");
order2.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart = 6){
var order3 = ss.getRange ("A6:G6");
order3.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart = 7){
var order4 = ss.getRange ("A7:G7");
order4.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart = 8){
var order5 = ss.getRange ("A8:G8");
order5.copyTo (destRange, {contentsOnly: true});
}
source.copyTo (destRange, {contentsOnly: true});
} else {
e.range.offset(0, 1).setValue('');
}
}
}
但是,當我提交或更新來自Customer 2
的訂單時,復制到 Order History 表中的訂單仍將是來自Customer 1
的訂單。 我認為原因是因為這行代碼: if (e.range.columnStart == 6 && e.range.rowStart >= 4)
其中>=4
是主要問題。 但是,我不確定如何將if statement
更改為for loop
,因為當column F
顯示Update
或Submit
時,這行代碼用於幫助在column G
中打印當前時間戳。
希望得到專家的指導,真的很感激任何幫助!
if(e.range.rowStart = 4) {
的情況下,將4
分配給e.range.rowStart
。 在您的腳本中,輸入了從 4 到 8 的數字。 在這些情況下,if 語句始終為true
。 這樣,第一個 if 語句的腳本將始終運行。 我認為這是您的問題的原因。source.copyTo (destRange, {contentsOnly: true});
,在您的腳本中, souece
聲明源。 所以我認為這一行發生了錯誤。當以上幾點反映到您的腳本時,它變成如下。
function onEdit(e){
const dt = Utilities.formatDate(new Date(), 'Asia/Singapore', 'HH:mm:ss');
var ss = SpreadsheetApp.getActiveSheet ();
var direction = SpreadsheetApp.Direction
var aLast = ss.getRange("I"+(ss.getLastRow()+1)).getNextDataCell(direction.UP).getRow()
var destRange = ss.getRange(aLast+1,9);
if (e.range.columnStart == 6 && e.range.rowStart >= 4) {
if (e.value == 'Update' || e.value == 'Submit') {
e.range.offset(0, 1).setValue(dt);
if(e.range.rowStart == 4) { // Modified
var order1 = ss.getRange ("A4:G4");
order1.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart == 5){ // Modified
var order2 = ss.getRange ("A5:G5");
order2.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart == 6){ // Modified
var order3 = ss.getRange ("A6:G6");
order3.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart == 7){ // Modified
var order4 = ss.getRange ("A7:G7");
order4.copyTo (destRange, {contentsOnly: true});
} else if (e.range.rowStart == 8){ // Modified
var order5 = ss.getRange ("A8:G8");
order5.copyTo (destRange, {contentsOnly: true});
}
// source.copyTo (destRange, {contentsOnly: true}); // Modified. I thought that this line mignt be able to be removed.
} else {
e.range.offset(0, 1).setValue('');
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.