2012-11-21 38 views
0

我正在運行一個腳本,該腳本使用消息框更改公式中的值。數組未獲取值

var searchtext = Browser.inputBox("Enter search text"); 
var replacetext = Browser.inputBox("Enter replace text"); 
var form = ss1.getRange("D3"); 
var formula = form.getFormula(); 
var updated =formula; 
updated.indexOf(searchtext); 
updated = updated.replace(searchtext, replacetext); 
form.setFormula(updated); 

var form2 = ss1.getRange("D10"); 
var formula2 = form2.getFormula(); 
var updated2 =formula2; 
updated2.indexOf(searchtext); 
updated2 = updated2.replace(searchtext, replacetext); 
form2.setFormula(updated2); 

當你注意到我必須重複我有不同範圍的代碼。在上面的代碼中,我有D3和D10範圍。我有另外20個範圍,我需要替換公式。我已經創建了這個數組,希望在腳本運行的時候一起完成它們,但我沒有看到任何更改。任何想法爲什麼會發生這種情況?

function dash(){ 
var ss1 = SpreadsheetApp.getActiveSpreadsheet(); 
var searchtext = Browser.inputBox("Enter search text"); 
var replacetext = Browser.inputBox("Enter replace text"); 

var rangeArray =  ss1.setActiveSheet(ss1.getSheetByName("Ranges").getRange("A1:A5").getValues()); 
var daily = ss1.setActiveSheet(ss1.getSheetByName("Daily")); 

for(var i in rangeArray){ 
var form = daily.getRange(rangeArray[i][0]); 

var formula = getRange(form).getFormula(); 
var updated =formula; 
updated.indexOf(searchtext); 
updated = updated.replace(searchtext, replacetext); 
form.setFormula(updated);} 

}

回答

1

有關於你的圖紙佈局的幾個PVC門,我忽略了,所以我不得不作出一些假設...... 我想你要處理的範圍是在表中的列,所以我會做這樣的事情(見代碼中的註釋):(我沒有機會測試此代碼,它可能需要一些調試)

function dash(){ 
    var ss1 = SpreadsheetApp.getActiveSpreadsheet(); 
    var searchtext = Browser.inputBox("Enter search text"); 
    var replacetext = Browser.inputBox("Enter replace text"); 
    var rangeArray = ss1.getSheetByName("Ranges").getRange("A1:A4").getValues(); // I suppose these cells contains A1 notation of the useful ranges 
    var daily = ss1.setActiveSheet(ss1.getSheetByName("Daily")); 
Logger.log(rangeArray) 
    for(var i in rangeArray){ 
    var formula = daily.getRange(rangeArray[i][0].toString()).getFormula();// 
Logger.log(formula) 
    var updated =formula.toString().replace(searchtext, replacetext); 
Logger.log(updated)  
} 
    daily.getRange(rangeArray[i][0].toString()).setFormula(updated);// 
} 

編輯:刪除第一個代碼和替換您的評論,例如以下表

+0

那裏在第一個版本中有一些拼寫錯誤,現在它應該沒問題(對不起,如果你嘗試了) –

+0

沒關係,我現在試圖運行它,但仍然沒有運氣。當我嘗試調試它時,我得到一個說服務器暫時關閉的谷歌錯誤消息。我正在分享電子表格,我正在進行測試,因此您可以有更好的主意,https://docs.google.com/a/infolinksa.net/spreadsheet/ccc?key = 0AgIoLd4RqjMXdFJDYXQxM05oaE9LYXFzUGtHS1NUTXc#gid = 0 –

+0

謝謝,它確實更容易這樣;-)看到更新的代碼,它變得更簡單和更短 –