自动查找和替换

时间:2019-09-14 18:34:03

标签: google-apps-script google-sheets google-sheets-formula surveymonkey

我与Surveymonkey一起工作,当有人不回答我的问题时,我的单元格充满了“ 未回答”。 目标是将多行合并为一。 可能的解决方案是:

  1. 我需要一个脚本来自动查找并替换。这将替换(更准确地说是删除未回答”),并用一个空白单元格。因此,我的TEXTJOIN将起作用。我已经尝试了一些代码,但不适用于整个工作表。 TEXTJOIN函数(定界符,ignore_empty,text1,[text2,...])的问题在于,第二个参数igrone_empty为布尔值,仅适用于TRUE或FALSE,并且无法编写“ 未回答”那里。因此,我必须找到另一种解决方案来忽略删除单词“ 未回答”。

  2. 替代TEXTJOIN的单词,其中“未回答”被忽略。

  3. 或者是否有可能在SurveyMonkey中删除此选项?

我已经尝试过此解决方案,但不适用于整个工作表/表格。

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

2 个答案:

答案 0 :(得分:1)

尝试一下:

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

答案 1 :(得分:0)

我需要一个触发器,所以这就是我解决问题的方式。如果有更简单的功能解决方案,请写下来。谢谢库珀。

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