Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 数组未获取值_Google Apps Script - Fatal编程技术网

Google apps script 数组未获取值

Google apps script 数组未获取值,google-apps-script,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(searchte

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

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

}

关于您的图纸布局,我忽略了一些信息,因此我不得不做出一些假设。。。 我假设您要处理的范围是工作表中的列,因此我会这样做(请参见代码中的注释):(我没有机会测试此代码,它可能需要一些调试)


编辑:删除了第一个代码并替换了下面的注释和示例表

在第一个版本中有一些拼写错误,现在应该可以了(如果您尝试了,很抱歉)。可以了,我现在正在尝试运行它,但仍然不走运。当我试着调试它时,我得到一条谷歌错误消息,上面说服务器暂时关闭了。我正在共享我正在进行测试的电子表格,以便您能有更好的想法,谢谢,这样做确实更容易;-)参见更新的代码,它变得更简单和简短。我尝试了更新的代码,但它只更改了最后一个范围,而保留了其他范围?你认为为什么会发生这种情况?我试过测试表,它处理了所有范围。。。奇怪。。。我会再测试一次,然后带着结果回来
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);//
}