自动查找替换
Automatically Find&Replace
我使用 surveymonkey 工作,当有人不回答我的问题时,我的手机就会充满“未回答”。
目标是将多行合并为一行。
可能的解决方案是:
我需要一个脚本来自动查找和替换。这将 replace(更准确地说 delete“Not Answered”)为空单元格。所以我的 TEXTJOIN 会起作用。我已经尝试了一些代码,但它对整个 sheet 不起作用。
TEXTJOIN 函数(分隔符,ignore_empty,text1,[text2,...])的问题是第二个参数 igrone_empty 是布尔值,只能与 TRUE 或 FALSE 一起使用,不能写“未回答”。因此,我必须找到另一个解决方案来 ignore 或 delete 单词“Not Answered”。
替代 TEXTJOIN,其中单词 "Not Answered" 被忽略。
或者是否可以在 SurveyMonkey 中删除此选项?
我试过这个解决方案,但对整个 sheet/table 都不起作用。
var result = ui.alert(
"Will update " + to_replace + " to " + replace_with + " ",
'Are you sure you want to continue?',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
spread.toast("Will update " + to_replace + " to " + replace_with + " ", "ALERT");
var data = range.getValues();
var oldValue="";
var newValue="";
var cellsChanged = 0;
for (var row=0; row<data.length; row++) {
for (var item=0; item<data[row].length; item++) {
oldValue = data[row][item];
newValue = data[row][item].replace(to_replace, replace_with);
if (oldValue!=newValue)
{
cellsChanged++;
data[row][item] = newValue;
}
}
}
range.setValues(data);
spread.toast(cellsChanged + " cells changed", "STATUS");
}
else {
// User clicked "No" or X in the title bar.
spread.toast("No action taken", "ABANDONED");
}
}
试试这个:
function replaceNotAnswerWithBlank(e) {
var ss=e.source;
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var tf=sh.createTextFinder('Not Answered').findAll();
for(var i=0;i<tf.length;i++) {
sh.getRange(tf[i].getRow(),tf[i].getColumn()).setValue('');
}
}
这个怎么样:
function onOpen(e) {
replaceNotAnswerWithBlank(e);
}
我需要一个触发器,所以这就是我解决问题的方法。如果有更简单的功能解决方案,请记下来。谢谢库珀。
function onOpen() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var tf=sh.createTextFinder('Not Answered').findAll();
replaceNotAnswerWithBlank(ss, sh, rg, tf);
}
function replaceNotAnswerWithBlank(ss, sh, rg, tf) {
for(var i=0;i<tf.length;i++) {
sh.getRange(tf[i].getRow(),tf[i].getColumn()).setValue('');
}
}
我使用 surveymonkey 工作,当有人不回答我的问题时,我的手机就会充满“未回答”。 目标是将多行合并为一行。 可能的解决方案是:
我需要一个脚本来自动查找和替换。这将 replace(更准确地说 delete“Not Answered”)为空单元格。所以我的 TEXTJOIN 会起作用。我已经尝试了一些代码,但它对整个 sheet 不起作用。 TEXTJOIN 函数(分隔符,ignore_empty,text1,[text2,...])的问题是第二个参数 igrone_empty 是布尔值,只能与 TRUE 或 FALSE 一起使用,不能写“未回答”。因此,我必须找到另一个解决方案来 ignore 或 delete 单词“Not Answered”。
替代 TEXTJOIN,其中单词 "Not Answered" 被忽略。
或者是否可以在 SurveyMonkey 中删除此选项?
我试过这个解决方案,但对整个 sheet/table 都不起作用。
var result = ui.alert(
"Will update " + to_replace + " to " + replace_with + " ",
'Are you sure you want to continue?',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (result == ui.Button.YES) {
// User clicked "Yes".
spread.toast("Will update " + to_replace + " to " + replace_with + " ", "ALERT");
var data = range.getValues();
var oldValue="";
var newValue="";
var cellsChanged = 0;
for (var row=0; row<data.length; row++) {
for (var item=0; item<data[row].length; item++) {
oldValue = data[row][item];
newValue = data[row][item].replace(to_replace, replace_with);
if (oldValue!=newValue)
{
cellsChanged++;
data[row][item] = newValue;
}
}
}
range.setValues(data);
spread.toast(cellsChanged + " cells changed", "STATUS");
}
else {
// User clicked "No" or X in the title bar.
spread.toast("No action taken", "ABANDONED");
}
}
试试这个:
function replaceNotAnswerWithBlank(e) {
var ss=e.source;
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var tf=sh.createTextFinder('Not Answered').findAll();
for(var i=0;i<tf.length;i++) {
sh.getRange(tf[i].getRow(),tf[i].getColumn()).setValue('');
}
}
这个怎么样:
function onOpen(e) {
replaceNotAnswerWithBlank(e);
}
我需要一个触发器,所以这就是我解决问题的方法。如果有更简单的功能解决方案,请记下来。谢谢库珀。
function onOpen() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getActiveSheet();
var rg=sh.getDataRange();
var tf=sh.createTextFinder('Not Answered').findAll();
replaceNotAnswerWithBlank(ss, sh, rg, tf);
}
function replaceNotAnswerWithBlank(ss, sh, rg, tf) {
for(var i=0;i<tf.length;i++) {
sh.getRange(tf[i].getRow(),tf[i].getColumn()).setValue('');
}
}