[英]How can I highlight (mark) the active row in google sheets?
條件格式對此沒有幫助。 我嘗試了許多在線發布的腳本,但沒有一個有效。
同樣的問題在這里: https : //support.google.com/docs/thread/4469470?hl=en
不幸的是,這是不可能的。
無法完成 thids 的主要原因是Sheets API 或 Google Apps Script 具有用於工作表上活動單元格更改時的偵聽器。 如果點擊或按鈕按下未對工作表進行編輯或更改,則也沒有點擊器或按鈕按下偵聽器。
我在 Apps Script 上一團糟,想看看我是否可以創建某種解決方法,盡管這最終遇到了其他障礙。
有使活動行改變顏色,它可以在Google Apps腳本喜歡的東西很容易做到的背景的一種方式:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currRow = ss.getActiveCell().getRow();
sheet.getRange(currRow + ":" + currRow).setBackground("#F4C2C2");
知道這一點,並且知道我無法通過單擊調用觸發器,我創建了一個 Sheets 插件,而是使用嵌入在 HTML 文檔中的 JavaScript 函數,該函數以特定的時間間隔調用 Apps 腳本方法:
<script>
function poll() {
setInterval(update, 500);
}
function update() {
google.script.run.rowHighlighter();
}
</script>
在code.gs
文件中使用以下rowHighlighter()
函數:
function rowHighlighter() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var currRow = ss.getActiveCell().getRow();
var l = PropertiesService.getUserProperties().getProperty("currRow");
if (l) {
sheet.getRange(l + ":" + l).setBackground("#FFFFFF");
}
sheet.getRange(currRow + ":" + currRow).setBackground("#F4C2C2");
PropertiesService.getUserProperties().setProperties({"currRow": currRow});
}
我認為可以從 Sheets 插件的側邊欄中調用此函數,並使用 Apps 腳本的PropertiesService
類來存儲當前選定的行,以便在其他地方單擊時可以重置顏色。
雖然這似乎產生了積極的結果,但這只持續了幾秒鍾 - 不幸的是,在此之后 Apps 腳本配額受到影響,並且從 Apps 腳本編輯器端看到的控制台中的錯誤表明需要進行一些限制,因此不需要那么多 Apps 腳本提出請求。 當然,雖然這是你可以做的事情,但增加在附加組件<body>
調用update()
函數的間隔會降低應用程序的實時性,並且整個功能都會中斷。
簡而言之; 這是做不到的。 Apps Script 和 Sheets API 都缺乏該功能,並且嘗試構建自己模擬它的東西將最終導致您使用所有配額,因為帳戶限制已達到。
我知道這通常是個壞消息,但我希望這對您有所幫助!
突出顯示單擊鼠標的單元格的行和列:
function onSelectionChange(e) {
const range = e.range;
const sheet = range.getSheet();
const maxRows = sheet.getMaxRows();
const maxColumns = sheet.getMaxColumns();
sheet.clearConditionalFormatRules();
var formula = '=A1<>"1239"';
//---------------------------------------------------------------
//RULE1
var range1 = sheet.getRange(range.getRow(), 1, 1, maxColumns);
var rule1 = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied(formula)
.setBackground('lightgray')
.setBold(true)
.setRanges([range1])
.build();
var rules1 = sheet.getConditionalFormatRules();
rules1.push(rule1);
sheet.setConditionalFormatRules(rules1);
//---------------------------------------------------------------
//RULE2
var range2 = sheet.getRange(1, range.getColumn(), maxRows, 1);
var rule2 = SpreadsheetApp.newConditionalFormatRule()
.whenFormulaSatisfied(formula)
.setBackground('lightgray')
//.setBold(true)
.setRanges([range2])
.build();
var rules2 = sheet.getConditionalFormatRules();
rules2.push(rule2);
sheet.setConditionalFormatRules(rules2);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.