不包含“#”时在编辑时清除单元格

时间:2019-12-27 16:48:37

标签: google-apps-script google-sheets

因此,我正在尝试编写一个脚本,该脚本在编辑时将检查单元格以查看其是否包含“#”,如果不包含则清除单元格。除了在某些情况下,当将值粘贴到单元格中时,有时单元格格式会更改时,我基本上都在使用它。我不能保证粘贴的格式是正确的,所以我试图添加一种方式来编辑单元格格式,然后检查“#”。这是我到目前为止的内容:

function onEdit(e){
var sheet = SpreadsheetApp.getActive().getSheetByName('CAHT');
var lr=sheet.getLastRow()
var vals = sheet.getRange(2,6,lr,1).getValues()
var newVals=[]// New array of numbers only and blank where text.
for(i=0;i<vals.length;i++){
   if(typeof vals[i][0]=="number"){//If a number keep the number.
      vals[i][0]=""
      newVals.push([vals[i][0]])}
    else{ //If not a number create a blank value.
   newVals.push([vals[i][0]])}
    }
var set= sheet.getRange(2,6,newVals.length,1).setValues(newVals)//Reset column E.
// sheet.getRange(2,5,newVals.length,1).setNumberFormat('@STRING@')//If you want the numbers formated as a string remove //
 Logger.log(newVals)
};

我对此并不十分有经验,因此大部分内容都是根据我在网上找到的内容拼凑而成的,并根据需要进行了一些微调。任何帮助或建议对此表示极大的赞赏。先感谢您!

1 个答案:

答案 0 :(得分:0)

这是想要什么吗?

function onEdit(e){
  //e.source.toast('Entry');
  var sh=e.range.getSheet();
  if(sh.getName()!='CAHT')return;
  if(e.range.columnStart==6 && e.range.rowStart>1) {
    //e.source.toast('Past Return');
    var vA=sh.getRange(2,6,sh.getLastRow()-1,1).getValues();
    var newVals=[];
    for(var i=0;i<vA.length;i++){
      if(typeof vA[i][0]=="number"){
        //e.source.toast('number');
        newVals.push([vA[i][0]])
      }else{
        //e.source.toast('not number');
        newVals.push([null]);
      }
    }
    sh.getRange(2,6,newVals.length,1).setValues(newVals);
    e.source.toast(newVals.map(function(r){return r[0]}).join(),'newVals',-1);
  }
}