Google apps script 在“唯一公式”列出其他值后更新单元格值

Google apps script 在“唯一公式”列出其他值后更新单元格值,google-apps-script,google-sheets,unique,google-sheets-formula,google-sheets-query,Google Apps Script,Google Sheets,Unique,Google Sheets Formula,Google Sheets Query,我有一个谷歌电子表格来计算我的财务开支。有几个类别,例如食品。每次我添加一个新类别时,UNIQUE value都会添加该值。这张表是给几个人的,所以我有几个独特的公式,每个人一个 我创建了一个脚本,它将唯一公式中的所有值复制到一列,然后使其唯一,以确保所有人都具有相同的类别 我想让它自动化,所以每次我添加一个新的类别时,其中一个唯一的列表都会更新,脚本应该启动。然而,这是我的问题。OneEdit脚本不会检测来自唯一公式的更改 onEdit脚本不工作 function onEdit(e) {

我有一个谷歌电子表格来计算我的财务开支。有几个类别,例如食品。每次我添加一个新类别时,UNIQUE value都会添加该值。这张表是给几个人的,所以我有几个独特的公式,每个人一个

我创建了一个脚本,它将唯一公式中的所有值复制到一列,然后使其唯一,以确保所有人都具有相同的类别

我想让它自动化,所以每次我添加一个新的类别时,其中一个唯一的列表都会更新,脚本应该启动。然而,这是我的问题。OneEdit脚本不会检测来自唯一公式的更改

onEdit脚本不工作

function onEdit(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = e.range;
  var editRange = { // B4:J6
    top : 3,
    bottom : 20,
    left : 22,
    right : 23
  };

  // Exit if we're out of range
  var thisRow = e.range.getRow();
  if (thisRow < editRange.top || thisRow > editRange.bottom) return;

  var thisCol = e.range.getColumn();
  if (thisCol < editRange.left || thisCol > editRange.right) return;

  sheet.getRange('X3:X1000').clearContent();

  var base = 3;
  var counter = 3;
  var counterResult = 3;

  while(sheet.getRange(counter, 22).getValue().length != 0){
    var getValue = sheet.getRange(counter++, 22).getValue();
    sheet.getRange(counterResult++, 24).setValue(getValue);
  }

  counter = base;

  while(sheet.getRange(counter, 23).getValue().length != 0){
    var getValue = sheet.getRange(counter++, 23).getValue();
    sheet.getRange(counterResult++, 24).setValue(getValue);
  }
}
函数onEdit(e){
var sheet=SpreadsheetApp.getActiveSheet();
var范围=e范围;
var editRange={//B4:J6
排名:3,
底数:20,
左:22,
右:23
};
//如果超出范围,请退出
var thisRow=e.range.getRow();
if(thisRoweditRange.bottom)返回;
var thisCol=e.range.getColumn();
如果(thisColeditRange.right)返回;
sheet.getRange('X3:X1000').clearContent();
var基数=3;
var计数器=3;
var反结果=3;
while(sheet.getRange(计数器,22).getValue().length!=0){
var getValue=sheet.getRange(计数器++,22).getValue();
sheet.getRange(counterResult++,24).setValue(getValue);
}
计数器=基准;
while(sheet.getRange(计数器,23).getValue().length!=0){
var getValue=sheet.getRange(计数器++,23).getValue();
sheet.getRange(counterResult++,24).setValue(getValue);
}
}
检测唯一公式中的更改的函数


哇!我不知道我可以用{}添加2个参数。这解决了我的问题!谢谢大家!

要杀死空的唯一性:

=QUERY(UNIQUE({A:A;B:B}), "where Col1 is not null", 0)

为什么不在整个作业中使用唯一公式而不是脚本编写?如何在至少两列中使用唯一公式?它只列出了具有唯一行的两列。如果我有3行a,a,b,a,a,a,a,a,a,a,a,a,a,b,b,b,b,b,b,b,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a。它不能解决我的问题。我想要这样的东西:哇!我不知道我可以用{}添加2个参数。这解决了我的问题!非常感谢。
=QUERY(UNIQUE({A:A;B:B}), "where Col1 is not null", 0)