Проблема с Google Sheet ConditionalFormatRuleBuilder с .setrange - PullRequest
0 голосов
/ 05 мая 2020

Здесь новый пользователь и не особо разбирается в коде. Я работаю над формой COVID-19 для нашей компании и нуждаюсь в помощи с проблемами условного форматирования. SOW: В настоящее время у нас есть форма Google с простыми вопросами, которые сотрудники будут заполнять каждый день по мере поступления. Эти данные заносятся в таблицу Google. Каждую ночь запускается триггер Google, который удаляет 200 строк листа Google для записей следующих дней, когда этот сценарий запускает его, портит мое ручное условное форматирование, поэтому я пытаюсь запустить сценарий удаления, за которым следует сценарий, который будет применять условное форматирование на новую простыню каждую ночь, чтобы все было готово к следующему дню.

Это то, что я запускаю, который удаляет строки каждую ночь:

***function deleteResponses() {     
var ss = SpreadsheetApp.openById('Sheet_ID');     
var sheet = ss.getSheets()[0];  
sheet.deleteRows(2, 200);  
 };***

Это сценарий условного форматирования, добавленный к нему и пытающийся запустить, и получаю следующую ошибку, я надеюсь, что кто-то сможет помогите мне с.

**function deleteResponses() {  
  var ss = SpreadsheetApp.openById('Sheet_ID');  
  var sheet = ss.getSheets()[0];  
  sheet.deleteRows(2, 200);  
};  
var sheet = SpreadsheetApp.openById('Sheet_ID');  
var range = sheet.getRange('C2:C1010');  
var rule = SpreadsheetApp.newConditionalFormatRule()  
   .whenTextContains('No')  
    .setBackground('#FF0000')  
    *.setRanges('C2:C1010')*  
    .build();  
var rules = sheet.getConditionalFormatRules();  
rules.push(rule);  
sheet.setConditionalFormatRules(rules);**

Я получаю эту ошибку.
"Сведения о сообщении Исключение: параметры (String) не соответствуют сигнатуре метода для SpreadsheetApp.ConditionalFormatRuleBuilder.setRanges. (строка 12, файл "Код") "

Всем, кто мог бы мне помочь, я был бы очень признателен!

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Условные диапазоны правил, во множественном числе , а setRanges принимает их список. Это должен быть список диапазонов , а не список обозначений A1 .

Таким образом, вы должны сначала построить диапазон из обозначения A1, а затем передать его в построитель правил, например:

var range = sheets.getRange("A1:A1010");
var ranges = [range]; // You can add more ranges to the same rule
var rule = SpreadsheetApp.newConditionalFormatRule().setRanges(ranges)...

Примечание: Обратите внимание, что вы передаете список объектов диапазона.


Ссылки:

0 голосов
/ 06 мая 2020

Я просто хотел прояснить ситуацию. Я думаю, что @Aerial верен, но я хотел указать, где, по моему мнению, была ваша проблема:

var rule = SpreadsheetApp.newConditionalFormatRule()  
   .whenTextContains('No')  
    .setBackground('#FF0000')  
    *.setRanges('C2:C1010')*  <= Problem is here
    .build();  
var rules = sheet.getConditionalFormatRules();  
rules.push(rule);  
sheet.setConditionalFormatRules(rules);**

Как показано в этом примере в документации. Для набора диапазонов требуется массив диапазонов, а не массив нотаций A1 или только одна нотация A1. Это может быть один диапазон, например [диапазон1].

var rule = SpreadsheetApp.newConditionalFormatRule()
    .whenNumberBetween(1, 10)
    .setBackground("#FF0000")
    .setRanges([rangeOne, rangeTwo])  <= Notice the array of ranges
    .build();
var rules = sheet.getConditionalFormatRules();
rules.push(rule);
sheet.setConditionalFormatRules(rules);

ссылка на пример

Я бы сказал, что многие проблемы здесь, в SO, предполагают, что многие программисты полагаются на их памяти документации слишком много. Я считаю, что лучше регулярно обращаться к документации, чтобы, когда я на какое-то время дойду до конца написания кода, я смогу тратить меньше времени на его отладку.

Уделите особое внимание типам возвращаемых данных и типам параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...