我想知道是否有腳本或公式可以執行以下操作。基本上,整個想法是制作一個添加到收藏夾復選框和一個從收藏夾中洗掉復選框,因此用戶將能夠將他最喜歡的產品從產品串列表添加到收藏夾串列表中并僅監控那些。
樣本表:https ://docs.google.com/spreadsheets/d/1qNmkmNWLqhysgNBbvnSO1AEn_j01Su14doAJpRrPEjE
- 添加到收藏夾復選框:
如果 Items!B3=True (勾選復選框)然后復制 Items!E1 并粘貼到收藏夾!A2 如果它是空的,如果它不是空的粘貼到收藏夾!A2 1 單元格(例如收藏夾!A3,收藏夾!A4 等)然后制作收藏夾!B3=False(取消勾選復選框)。還要檢查復制的值是否已經存在,然后不要粘貼并制作收藏夾!B3=False(取消選中復選框)。
- 從收藏夾中洗掉復選框:
如果 Items!B4=True(勾選復選框),則使用 Favorites!A:A 過濾 Items!E1 并從 Favorites!A:A 中洗掉匹配的值,然后使 Items!B4=False(取消勾選復選框)。
一些進一步的解釋: https ://puu.sh/ISxAD/6d38c87af3.png https://puu.sh/ISxFC/14bf4a6520.png
謝謝
uj5u.com熱心網友回復:
給你(更新):
function onEdit(e) {
if (e.range.getSheet().getName() != 'Charts') return;
if (e.range.columnStart != 7) return;
if (e.range.rowStart == 1 && e.value == 'TRUE') add_item(e);
if (e.range.rowStart == 2 && e.value == 'TRUE') remove_item(e);
}
function add_item(e) {
var [ss, item, favs_sheet, favs_range, favs, header] = get_variables(e);
if (favs.includes(item)) { ss.toast(item ' is already in favorites'); return}
favs.push(item);
favs = [header, ...favs.sort()].map(x => [x]);
favs_sheet.getRange(1,1,favs.length,favs[0].length).setValues(favs);
ss.toast(item ' was added');
}
function remove_item(e) {
var [ss, item, favs_sheet, favs_range, favs, header] = get_variables(e);
if (!favs.includes(item)) { ss.toast(item ' was not found among favorites'); return }
favs = [header, ...favs.filter(x => x != item).sort()].map(x => [x]);
favs_range.clear();
favs_sheet.getRange(1,1,favs.length,favs[0].length).setValues(favs);
ss.toast(item ' was removed');
}
function get_variables(e) {
e.range.uncheck();
var ss = e.source;
var item = e.range.getSheet().getRange('B2').getValue();
var favs_sheet = ss.getSheetByName('Favorites');
var favs_range = favs_sheet.getRange('A:A');
var favs = favs_range.getValues().flat().filter(String);
var header = favs.shift();
return [ss, item, favs_sheet, favs_range, favs, header]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/457223.html
