我正在嘗試從ziganotschka自定義以下 GAS 腳本,以便在觸發事件(在單元格中手動輸入值)時向作業表的所有列添加背景顏色。
我想過使用陣列而不是多個 || OR 陳述句,但我不知道該怎么做。
ziganotschka 腳本(使用我自定義的多個 || OR 陳述句):
function onEdit(e) {
var c = e.range.getColumn();
if(c == 1 || c == 2){
var text = e.value;
var sheet = SpreadsheetApp.getActive().getActiveSheet();
var range = sheet.getRange(1,1,sheet.getLastRow(),2);
var values = range.getValues();
var array = [];
var row = e.range.getRow();
for (var i =0; i <values.length; i ){
if(row!=(i 1))
{
array.push(values[i][0]);
}
}
if(array.indexOf(text)==-1){
var backgrounds = range.getBackgrounds();
var color = getRandomColor();
while(backgrounds.indexOf(color)>-1){
color = getRandomColor();
}
buildConditionalFormatting(text, color)
}
}
}
function getRandomColor() {
var letters = '0123456789abcdef';
var color = '#';
for (var i = 0; i < 6; i ) {
color = letters[Math.floor(Math.random() * 16)];
}
return color;
}
function buildConditionalFormatting(text, color){
var sheet = SpreadsheetApp.getActiveSheet();
var formattingRange = sheet.getRange("A:B");
var rule = SpreadsheetApp.newConditionalFormatRule()
.whenTextEqualTo(text)
.setBackground(color)
.setRanges([formattingRange])
.build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);
}
簡而言之,我的請求是如何從allColumns下面的陣列中獲取任何索引(???)以用作下面 if 陳述句中的列號?
function onEdit(e) {
const allColumns = [1, 2];
var c = e.range.getColumn();
if(c == ??? ){
我的目標是找到一種方法來避免使用多個 || 每列的 OR 陳述句(可能是無限數量的列,取決于觸發器,甚至涉及在任何單元格中輸入文本)。
我已經尋找了一種使用陣列代替 || 的方法 OR 陳述句,到目前為止,我已經從這篇文章如何輕松縮短代碼中的 OR(||) 運算子的長串列中找到了 array.includes() 方法。
但是我的代碼不起作用,這是我嘗試過的:
function onEdit(e) {
const allColumns = [1, 2];
var c = e.range.getColumn();
if(c == allColumns.includes(e)){
我還考慮過從 JavaScript 陣列中獲取隨機值,以及如何創建包含 1...N 的陣列。但也無濟于事。
我的代碼:
function onEdit(e) {
const allColumns = [1, 2];
const random = Math.floor(Math.random() * allColumns.length);
var c = e.range.getColumn();
if(c == random ){
我的代碼:
function onEdit(e) {
const allColumns = _.range(1, 2);
const random = Math.floor(Math.random() * allColumns.length);
var c = e.range.getColumn();
if(c == random ){
該樣品表:
uj5u.com熱心網友回復:
e是{}具有各種屬性的事件物件
c 是列號。
if(c == allColumns.includes(e)){是不正確的。該腳本要求檢查是否allColumns包含 object e。那總會回來的false。正確的語法是:
if(allColumns.includes(c)){
練習Array.includes。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393535.html
