免責聲明:我是Newb。我理解腳本的一點點,但寫這對我來說是一個痛苦,主要是循環和數組,因此以下。替換列中的某些單元格值
我試圖從一個特定的列(在這種情況下H [8])中拉出所有數據,檢查該列中的每個單元格的值,如果它是y,則將其更改爲是;如果是n,則將其更改爲否;如果它是空的,請保持獨立並移動到下一個單元格。
這是我到目前爲止。像往常一樣,我相信我非常接近,但我無法設置活動單元格的值,也看不到我在哪裏搞亂它。在某一點上,我實際上已將列中的值改爲是(,所以在這些情況下感謝取消)。
表的實施例:
..... COL-H
r1... [service] <-- header
r2... y
r3... y
r4... n
r5... _ <-- empty
r6... y
意圖:更改所有的Y是爲是和所有的n對否(跳至空白細胞)。
我到目前爲止已經試過:
功能嘗試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");
}
}
}
使用:
一旦我DONE在這裏,我想修改該函數,以便我可以定位任何列並將一個值更改爲另一個值(我已經有一個方法,但我需要能夠設置值)。它會這樣:=替換(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!
我總是想念小東西哈哈。再次感謝! – Steve
我想我跳過了槍。我添加了該語句並收到錯誤「TypeError:無法在對象中找到函數setValue」。它列出了它所發現的所有當前值,所以它似乎在拉動正確的東西。爲什麼它不'找到對象的setValue函數'? – Steve
你使用setValues包括s嗎? – ScampMichael