我一直試圖讓一個簡單的函式作業幾天,但我看不出哪里出錯了。我真的很感激可以提供一些幫助。
背景:我有一個日歷選項卡,上面有一張桌子,里面有商店,上面有日期。
當用戶在 E7:AI200 之間單擊時,我希望能夠:
- 從第 1 列和單擊的行中獲取 Store Name,然后使用該值填充 B1。
- 從第 1 行和單擊的列中獲取日期,并用該值填充 C1。
這似乎作業正常。
我還希望電子表格在單擊 E7:AI200 之間的單元格時自動導航到另一個名為“過濾事件”的選項卡。
這似乎也作業正常。
問題:當我單擊回傳“日歷”選項卡時,它似乎重新單擊了原始單元格并直接將我導航回“已過濾事件”選項卡,每次嘗試回傳時,我都陷入了在選項卡之間連續切換的回圈到日歷。
function onSelectionChange(e) {
var ss = SpreadsheetApp.getActive();
if (ss.getActiveSheet().getName() == "Calendar") {
var sheet = ss.getSheetByName("Calendar");
var full_range = sheet.getRange("A1:AI200");
var click_range = e.range;
var row_lookup = click_range.getRow();
var col_lookup = click_range.getColumn();
var selected_store = full_range.getCell(row_lookup, 1).getValue();
var selected_date = full_range.getCell(1, col_lookup).getValue();
var populate_store = sheet.getRange("B1");
var populate_date = sheet.getRange("C1");
if (row_lookup > 6 && row_lookup < 250 && col_lookup < 36 && col_lookup > 4) {
populate_store.setValue(selected_store);
populate_date.setValue(selected_date);
var change_sheet = ss.getSheetByName("Filtered Events");
change_sheet.activate();
}
else {
populate_store.setValue('');
populate_date.setValue('');
}
}
}
uj5u.com熱心網友回復:
也許您可以使用PropertiesService存盤所選單元格的最后使用的坐標并在腳本開始時檢查它們:
function onSelectionChange(e) {
var ss = SpreadsheetApp.getActive();
if (ss.getActiveSheet().getName() == "Calendar") {
var sheet = ss.getSheetByName("Calendar");
var full_range = sheet.getRange("A1:AI200");
var click_range = e.range;
var row_lookup = click_range.getRow();
var col_lookup = click_range.getColumn();
// try to get the last used cell coordinates
var last_cell_row = PropertiesService.getScriptProperties().getProperty('last_cell_row');
var last_cell_col = PropertiesService.getScriptProperties().getProperty('last_cell_col');
// save current cell coordinates
PropertiesService.getScriptProperties().setProperty('last_cell_row', row_lookup);
PropertiesService.getScriptProperties().setProperty('last_cell_col', col_lookup);
// if the coordinates are the same break the function
if (row_lookup == last_cell_row && col_lookup == last_cell_col) return;
// the rest of your code ...
我沒有測驗過。如果您提供一些虛擬資料用于測驗,您的作業表的外觀會更好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/384478.html
