Отказ от ответственности: Я - Newb. Я немного разбираюсь в написании сценариев, но писать это боль для меня, в основном с циклами и массивами, и, следовательно, следующее.Заменить значения определенных ячеек в колонке
Я пытаюсь вытащить все данные из определенного столбца (в данном случае H [8]), проверить значение каждой ячейки в этом столбце и, если это y, изменить его на Да; если это n, измените его на No; если он пуст, оставьте его в покое и перейдите в следующую ячейку.
Вот что у меня есть. Как обычно, я считаю, что я довольно близко, но я не могу установить значение активной ячейки, и я не вижу, где я это испортил. В какой-то момент я фактически изменил значение Да в колонке (так благодарен за отмену в этих случаях).
Пример листа:
..... COL-H
r1... [service] <-- header
r2... y
r3... y
r4... n
r5... _ <-- empty
r6... y
Намерение: Изменить все у это значение Да и все п, чтобы Нет (пропустить пустые ячейки).
То, что я пытался до сих пор:
Функция попытка 1
function Thing1() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("mySheet");
var lrow = ss.getLastRow();
var rng = ss.getRange(2, 8, lrow - 1, 1);
var data = rng.getValues();
for (var i=0; i < data.length; i++) {
if (data[i][0] == "y") {
data[i][0] == "Yes";
}
}
}
Функция попытка 2
function Thing2() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("mySheet");
var lrow = ss.getLastRow();
var rng = ss.getRange(2, 8, lrow - 1, 1);
var data = rng.getValues();
for (var i=0; i < data.length; i++) {
if (data[i][0] == "n") {
data.setValue("No");
} else if (data[i][0] == "y") {
data.setValue("Yes");
}
}
}
Использование:
После того, как я сделанный здесь я хочу изменить функцию, чтобы я мог настроить таргетинг на любой столбец и изменить одно значение на другое (у меня уже есть метод для этого, но мне нужно установить значение). Это было бы так: = replace (sheet, col, orig_value, new_value). Я опубликую его, а также ниже.
Заранее благодарим за помощь.
Завершенного код для поиска и замен в колонке
function replace(sheet, col, origV1, newV1, origV2, newV2) {
// What is the name of the sheet and numeric value of the column you want to search?
var sheet = Browser.inputBox('Enter the target sheet name:');
var col = Browser.inputBox('Enter the numeric value of the column you\'re searching thru');
// Add old and new targets to change (Instance 1):
var origV1 = Browser.inputBox('[Instance 1:] What old value do you want to replace?');
var newV1 = Browser.inputBox('[Instance 1:] What new value is replacing the old?');
// Optional - Add old and new targets to change (Instance 2):
var origV2 = Browser.inputBox('[Instance 2:] What old value do you want to replace?');
var newV2 = Browser.inputBox('[Instance 2:] What new value is replacing the old?');
// Code to search and replace data within the column
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet);
var lrow = ss.getLastRow();
var rng = ss.getRange(2, col, lrow - 1, 1);
var data = rng.getValues();
for (var i=0; i < data.length; i++) {
if (data[i][0] == origV1) {
data[i][0] = newV1;
} else if (data[i][0] == origV2) {
data[i][0] = newV2;
}
}
rng.setValues(data);
}
Надеется, что это помогает кто-то там. Еще раз спасибо @ScampMichael!
Мне всегда не хватает мелочи lol. Еще раз спасибо! – Steve
Думаю, я прыгнул с пистолета. Я добавил этот оператор и получил ошибку «TypeError: Не могу найти функцию setValue в объекте». Он перечислял все текущие значения, которые он нашел, поэтому, похоже, он тянет нужные вещи. Почему бы ему не «найти функцию setValue в объекте»? – Steve
Вы использовали setValues, включая s? – ScampMichael