簡體   English   中英

比較兩個不同單元格的值評估為 false - Google Apps Script

[英]Comparing values of two different cells evaluate to false - Google Apps Script

我是 JavaScript 新手,正在處理電子表格,試圖根據單元格內容隱藏列。

想法是:當值 1 和值 2 相同(兩個不同單元格的值相同)時,該列保持未隱藏狀態。 當不相同時,它會隱藏。 但是,每次 OnEdit 時,列都會隱藏。

此外,當值相同時,我無法使其取消隱藏。 有任何想法嗎?

 function onEdit(e) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getSheetByName("Auto media planner"); // Enter sheet name var cell1 = s.getRange('C7'); var cell2 = s.getRange('AX6'); var value1 = cell1.getValues(); var value2 = cell2.getValues(); var column = s.getRange("D1"); if (value1!=value2){ s.hideColumn(column); } if (value1==value2){ s.unhideColumn(column); }

解釋:

  • 在您的代碼中, value1value2是具有以下格式[[]]數組,因為您使用了getValues()
  • 不能像比較兩個值一樣比較兩個數組 即使數組中的值相同,此value1==value2也會返回false
  • 要正確比較兩個數組,一種方法是運行: JSON.stringify(value1)==JSON.stringify(value2)如果值相同,則結果為true

看這個例子:

 val1 = [[0.0]]; val2 = [[0.0]]; console.log(val1 == val2) // Returns false console.log(JSON.stringify(val1)==JSON.stringify(val2)); // Returns true


解決方案:

只需更換:

var value1 = cell1.getValues();
var value2 = cell2.getValues();

和:

var value1 = cell1.getValue();
var value2 = cell2.getValue();

這是完整的解決方案:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName("Auto media planner");      // Enter sheet name
  var cell1 = s.getRange('C7');
  var cell2 = s.getRange('AX6');
  var value1 = cell1.getValue();
  var value2 = cell2.getValue();
  var column = s.getRange("D1");

  if (value1!=value2){  
  s.hideColumn(column);
}
  

if (value1==value2){ 
  s.unhideColumn(column);
} 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM