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

}

4

1 に答える 1

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

編集:最初のコードを削除し、コメントとサンプルシートに従って置き換えました

于 2012-11-21T07:07:56.610 に答える