как я могу пройти только в пустую ячейку, а не всю ячейку
этот скрипт записывает все ячейки в C в то же значение, что и B, но мне просто нужно записать только пустую ячейку со значением B.
может кто-нибудь найти ошибку в этой функции????
function fill() {
var tss = SpreadsheetApp.getActiveSpreadsheet();
var values = tss.getRange("data!C:C").getValues();
for(i=0; i<values.length; i++) {
var value = values[i][0];
if (value == "") {
var rangeA = tss.getSheetByName("data").getRange(i+1,2);
var rangeB = tss.getSheetByName("data").getRange(i+1,3);
var copypaste = tss.getSheetByName("data");
if (!rangeA.isBlank()) {
copypaste.getRange("B2:B").copyTo(copypaste.getRange("C2:C"),{contentsOnly:true})
}
}
}
}
Если я правильно понял вашу проблему, приведенный ниже код должен привести к желаемому результату.
function fill() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("<your-sheet-id>");
var range = sheet.getRange("C1:C" + sheet.getLastRow()); //Get populated cells in column C
var valuesC = range.getValues();
var valuesB = sheet.getRange("B1:B" + sheet.getLastRow()).getValues();
for (var i = 0; i < valuesC.length; i++) {
if (valuesC[i][0] === "") {
valuesC[i][0] = valuesB[i][0]; //Assign value of column B to column C only if corresponding cell in column C is empty
}
}
range.setValues(valuesC); //Updates values on column C with the modified values
}
Этот скрипт копирует значения из столбца B в столбец C только там, где столбец C пуст. Он напрямую обновляет значения в столбце C вместо использования copyTo.
привет, спасибо за помощь, все работает идеально
Привет. Могу ли я узнать, почему мне проголосовали против, чтобы я мог улучшиться в следующий раз?
«Ошибка» возникает в следующей части
copypaste.getRange("B2:B").copyTo(copypaste.getRange("C2:C"),{contentsOnly:true})
Вместо конкретной ячейки для копирования появляется B2:B
.
Заменять
copypaste.getRange("B2:B")
к
rangeA
Стоит отметить, что пункт назначения следует изменить на.
От
copypaste.getRange("C2:C")
к
rangeB
Стоит отметить, что скрипт можно оптимизировать, переместив
var copypaste = tss.getSheetByName("data");
над утверждением for
.
спасибо за помощь, у меня оба скрипта работают хорошо
теперь у меня есть еще одна проблема: скрипт копирует временную метку в прошлое
как я могу добавить плюс 5 часов ко времени копирования из ячейки
формат даты 31.01.2024 13:02:34
Добро пожаловать в Stackoverflow. Пожалуйста, опубликуйте это как еще один вопрос, поскольку каждое сообщение должно содержать только конкретную проблему. Если у вас есть дополнительные вопросы или дополнительный вопрос, я предлагаю опубликовать его как еще один вопрос.
Не стесняйтесь оставлять комментарии к предложенному выше ответу.