Google apps script 在谷歌电子表格中搜索和替换数据
为什么我的脚本不起作用?它不搜索数据。消息显示已完成,但工作表看起来没有变化。谁能帮我Google apps script 在谷歌电子表格中搜索和替换数据,google-apps-script,google-sheets,Google Apps Script,Google Sheets,为什么我的脚本不起作用?它不搜索数据。消息显示已完成,但工作表看起来没有变化。谁能帮我 function SearchReplaceInFormula() { //begin work var pattern = Browser.inputBox("Enter the search string:"); //text on label var replacement = Browser.inputBox("Enter the replacement string:"); //text on
function SearchReplaceInFormula() { //begin work
var pattern = Browser.inputBox("Enter the search string:"); //text on label
var replacement = Browser.inputBox("Enter the replacement string:"); //text on label
if (pattern == "" && replacement == "") // empty
{
Browser.msgBox("Nothing to search and or replace");
return;
}
//
var formula = SpreadsheetApp.getActiveRange().getValues(); //get a data all range
var range = SpreadsheetApp.getActiveRange(); //get range
var crows = range.getNumRows(); //last rows
var ccols = range.getNumColumns(); //last columns
var row = 0; //
for (row = 1; row <= crows; row++)//
{
for (col=1; col <= ccols; col++) //
{
var cell = range.getCell(row, col);
var formula = cell.getValues(); //may be getValue
var updated = formula; //update
while(-1 != updated.indexOf(pattern)) //what -1
{
updated = updated.replace(pattern, replacement); //replace before update
}
if (formula != updated)
{
cell.setFormula(updated) //set vales?
}
}
}
Browser.msgBox("Done replacing " + pattern + " with " + replacement); //shows always
}
函数searchreplaceformula(){//开始工作
var pattern=Browser.inputBox(“输入搜索字符串:”);//标签上的文本
var replacement=Browser.inputBox(“输入替换字符串:”);//标签上的文本
if(pattern==“”&&replacement==“”)//空
{
msgBox(“无需搜索或替换”);
返回;
}
//
var formula=SpreadsheetApp.getActiveRange().getValues();//获取所有数据范围
var range=SpreadsheetApp.getActiveRange();//获取范围
var crows=range.getNumRows();//最后一行
var ccols=range.getNumColumns();//最后一列
var行=0//
对于(row=1;row我重新编写了您的代码,并添加了一个菜单选项,以便可以轻松访问
更新:09-01-2013
添加了额外的代码以检查是否有更改(数组比较)。
还包括电子表格的工作示例:
函数onOpen(){
//获取活动电子表格
var ss=SpreadsheetApp.getActiveSpreadsheet();
//创建菜单
var菜单=[{name:“Searh/Replace”,functionName:“searchreplaceformula”}];
//添加到菜单
ss.添加菜单(“额外的”,菜单);
}
函数searchreplaceformula(){
//设置参数
var pattern=Browser.inputBox(“输入搜索字符串:”);
var replacement=Browser.inputBox(“输入替换字符串:”);
//如果未输入任何内容,请通知用户
如果(模式=“”&替换=“”){
msgBox(“无需搜索或替换”);
返回;
}
//获取范围和数据
var dataRange=SpreadsheetApp.getActiveRange().getValues();
var copyRange=dataRange;
var range=SpreadsheetApp.getActiveRange();
var ccols=dataRange[0]。长度,crows=dataRange.length;
//通过数据进行分类
对于(var i=0;i
function onOpen() {
// get active spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// create menu
var menu = [{name: "Searh/Replace", functionName: "SearchReplaceInFormula"}];
// add to menu
ss.addMenu("Extra's", menu);
}
function SearchReplaceInFormula() {
// set parameters
var pattern = Browser.inputBox("Enter search string:");
var replacement = Browser.inputBox("Enter replacement string:");
// inform user if nothing was entered
if(pattern == "" && replacement == "") {
Browser.msgBox("Nothing to search and or replace");
return;
}
// get ranges and data
var dataRange = SpreadsheetApp.getActiveRange().getValues();
var copyRange = dataRange;
var range = SpreadsheetApp.getActiveRange();
var ccols = dataRange[0].length, crows = dataRange.length;
// itterate through data
for (var i=0; i<crows; i++) {
for (var j=0; j<ccols; j++) {
if(copyRange[i][j].indexOf(pattern) != -1) {
copyRange[i][j] = copyRange[i][j].replace(pattern, replacement);
}
}
}
// set changed values
range.setValues(dataRange);
// check if array's are equal
var equal = arraysEqual(copyRange, dataRange);
// inform user what happend
if(equal == true) {
Browser.msgBox("No matches found...");
} else {
Browser.msgBox("Done replacing " + pattern + " with " + replacement);
}
}
function arraysEqual(arr1, arr2) {
if(arr1.length !== arr2.length)
return false;
for(var i = arr1.length; i--;) {
if(arr1[i] !== arr2[i])
return false;
}
return true;
}