我有一個電子表格,我想用它來存儲項目時間表。我有能力添加項目和他們的開始日期以及他們的長度,直到完成 - 這是在「項目」工作表。這通過單獨的工作表反映出來,具體爲每個項目設置特定顏色的細胞,具體取決於它們設置的日期 - 這是「時間軸」工作表。我想刪除一個項目時遇到問題。我想單擊項目名稱的單元格,然後從我創建的菜單中單擊「刪除項目」,然後在「項目」工作表和「時間線」工作表上刪除項目行。這個循環令我感到困惑,我並不完全理解它。我應該使用數組來存儲兩張紙上的項目名稱,然後使用它來相互引用,或者......?這是我到目前爲止。根據條件刪除數據行
function clearProject() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Projects');
var sourceRange = sourceSheet.getActiveRange();
var height = sourceRange.getValues().length;
var rowPosition = sourceRange.getRowIndex();
var targetSheet = ss.getSheetByName('Timeline');
var targetSheetValues = targetSheet.getRange(3, 1, 15, 49);
var targetProjectNames = targetSheet.getRange(3, 1, 15, 1).getValues();
var sourceProjectNames = sourceSheet.getRange(2, 1, 15, 1).getValues();
var targetHeight = targetSheet.getRange(3, 1, 15, 1).length;
var targetRowPosition = targetSheet.getRange(3, 1, 15, 1).getRowIndex();
for(var i=0; i > sourceProjectNames.length; i++){
if(i == targetProjectNames){
targetSheet.deleteRows(targetRowPosition, targetHeight);
}
else{
break;
}
}
//This deletes the row of the active cell
//ss.getActiveSheet().deleteRows(rowPosition, height);
Logger.log(i);
}
另外,如果你知道任何解釋簡單英文循環的資源,請給我一個鏈接。感謝您的幫助!
編輯:在「if」語句中將=從比較改爲==。 編輯2:更改了for
循環中的比較。另外,改變了什麼if
聲明比較。
該循環仍然無法正常工作。當我檢查i
的日誌時,我收到0.0
。下面是新的代碼...
function clearProject() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName('Projects');
var sourceRange = sourceSheet.getActiveRange();
var height = sourceRange.getValues().length;
var rowPosition = sourceRange.getRowIndex();
var targetSheet = ss.getSheetByName('Timeline');
var targetSheetValues = targetSheet.getRange(3, 1, 15, 49);
var sourceRangeValues = sourceSheet.getRange(2, 1, 15, 1);
var targetProjectNames = targetSheet.getRange(3, 1, 15, 1).getValues();
var sourceProjectNames = sourceSheet.getRange(2, 1, 15, 1).getValues();
var targetHeight = targetSheet.getRange(3, 1, 15, 1).length;
var targetRowPosition = targetSheet.getRange(3, 1, 15, 1).getRowIndex();
for(var i=0; i < sourceRangeValues.length; i++){
if(targetProjectNames[i][0] == sourceRange[i][0]){
targetSheet.deleteRows(targetRowPosition, targetHeight);
Logger.log(i);
}
}
//This deletes the row of the active cell
//ss.getActiveSheet().deleteRows(rowPosition, height);
Logger.log(i);
}
你的代碼中最大的問題不是循環,而是比較......看看一些關於JavaScript條件的doc,例如這裏:http://www.w3schools.com/js/js_comparisons.asp。和這裏。 http://www.w3schools.com/js/js_if_else.asp –
我不敢相信我沒有抓到!我改變了比較,但我的代碼仍然無法正常工作。 – dericcain
break語句阻止循環工作,因爲它總是處於活動狀態,將其移動到以下條件:if(... == ...){break} –