数组没有得到值

时间:2012-11-21 06:38:59

标签: google-apps-script

我正在运行一个脚本,该脚本使用消息框更改公式中的值。

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 个答案:

答案 0 :(得分:1)

我忽略了有关您的工作表布局的一些信息,所以我不得不做出一些假设...... 我想你要处理的范围是表格中的列,所以我会做这样的事情(参见代码中的注释):(我没有机会测试这段代码,可能需要一些调试)

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);//
}

编辑:删除了第一个代码并替换了您的评论和示例表