- Когда значение ячейки "C2" листа
Input
совпадает со значением ячейки "B2 активного листа", необходимо скопировать значения ячеек "C6: Z999" лист Input
в ячейки "C6: Z999" активного листа. - Вы хотите узнать причину следующего сообщения об ошибке.
Exception: The parameters (String) don't match the method signature for SpreadsheetApp.Sheet.getActiveRange
Если мое понимание правильное, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Точки изменения:
-
getActiveRange()
не имеет аргументов. Но вы используете аргументы. Я думаю, что причина вашего сообщения об ошибке заключается в следующем. - Кроме того,
getActiveCell()
не имеет аргументов. Поэтому в вашем сценарии я думаю, что ошибка происходит в var dateCell = inputSheet.getActiveCell("C2").getValue();
. Из этой ситуации я подумал, что ваш проверенный сценарий может отличаться от сценария в вашем вопросе. - Когда я увидел поток вашего сценария, я подумал, что ваша цель может быть следующей .
- Когда значение ячейки "C2" листа
Input
равно то же самое со значением ячейки "B2 активного листа" необходимо скопировать значения ячеек "C6: Z999" листа Input
в ячейки "C6: Z999" активного листа. - Если мое понимание верно,
getActiveCell("C2")
, getActiveRange("C6:Z999")
и getActiveCell("B2")
могут быть getRange("C2")
, getRange("C6:Z999")
и getRange("B2")
соответственно.
Шаблон 1:
В этом шаблоне ваш скрипт модифицируется для удаления сообщения об ошибке.
Модифицированный скрипт:
Пожалуйста, измените ваш скрипт следующим образом.
От:
var dateCell = inputSheet.getActiveCell("C2").getValue();
var inputRange = inputSheet.getActiveRange("C6:Z999");
var currentRange = currentSheet.getActiveRange("C6:Z999");
if (dateCell == currentSheet.getActiveCell("B2").getValue()){
Кому:
var dateCell = inputSheet.getRange("C2").getValue();
var inputRange = inputSheet.getRange("C6:Z9");
var currentRange = currentSheet.getRange("C6:Z9");
if (dateCell == currentSheet.getRange("B2").getValue()){
Шаблон 2:
В этом шаблоне ваш скрипт модифицируется путем уменьшения стоимости процесса. В вашем текущем сценарии getValue()
и setValue()
используются в для l oop. В этом случае, когда inputRows
и inputCols
велики, стоимость процесса будет высокой. Поэтому в этом шаблоне я хотел бы предложить снизить стоимость.
Модифицированный скрипт:
Пожалуйста, измените ваш скрипт следующим образом. В этой модификации значения ячеек "C6: Z999" листа Input
копируются в ячейки "C6: Z999" активного листа с использованием copyTo
. Таким образом, ваша цель может быть достигнута без использования for l oop.
function pullData(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var inputSheet = ss.getSheetByName("Input");
var currentSheet = ss.getActiveSheet();
var dateCell = inputSheet.getRange("C2").getValue();
var inputRange = inputSheet.getRange("C6:Z9");
var currentRange = currentSheet.getRange("C6:Z9");
if (dateCell == currentSheet.getRange("B2").getValue()){
inputRange.copyTo(currentRange, {contentsOnly:true}); // Modified
}
}
Ссылки:
Если я неправильно понял ваш вопрос, и вы не указали ожидаю, я прошу прощения.