[英]Very strange Google Apps Script behavior
我看到Google Apps腳本有一些非常奇怪的行為。 我想要做的就是解析工作表中的某些行,如果有任何行,如果日期> 1999年1月1日,則添加一個下拉列表,該下拉列表會預先填充一些“錯誤值”。 這里的奇怪行為是,它總是在滿足日期檢查條件的行上方填充下拉菜單。 因此,例如,如果第5行滿足條件,則在第4行中填充下拉列表。 不知道為什么會這樣。 我也嘗試這樣做
var range = sheet.getRange(i+1, 14);
但這似乎並未在屏幕上顯示任何內容。 我無法理解這種奇怪的行為。 任何幫助將不勝感激。
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[1];
var dataRange = sheet.getDataRange();
var values = dataRange.getDisplayValues();
for (var i = rowNum; i < values.length; i++) {
if (new Date(values[i][9]).getTime() > new Date('1/1/1999').getTime()){
SpreadsheetApp.getUi().alert(values[i][2]);
var range = sheet.getRange(i, 14);
var rule = SpreadsheetApp.newDataValidation().requireValueInList(['Error Value'], true).build();
range.setDataValidation(rule);
}
采用
var range = sheet.getRange(Number(i)+1, 14);
當您使用i + 1且i = 20時,i + 1變為201,並且屏幕上看不到任何可見的差異。 第201行將在您的屏幕下方。
在JavaScript中,數字和字符串有時會以您不期望的方式運行。 在對變量進行運算之前,務必要采取預防措施。
您的數據驗證設置為null。 應該是Range.setDataValidation(rule)
這就是為什么您沒有看到下拉框的原因。 該功能
Range.getDisplayValues()
返回一個數組,數組的索引從0開始。但是,在電子表格中,行索引從1開始。因此,您需要添加1才能將數組索引轉換為行索引。 使用以下內容獲取正確的范圍
Sheet.getRange(i+1,14)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.