繁体   English   中英

使用谷歌应用脚​​本修复我在谷歌表格中的#ERROR

[英]fixing my #ERROR in google sheets with google apps script

我有一个谷歌应用程序脚本程序,它查看整个电子表格并将第 5 列中具有空值的行移动到另一个工作表(代码块 3)中。

但是,我在转移时不断收到#error ,因为在某些行中,某些电话号码前面有一个 +。 我试图将整个数字变成一个字符串(带有 foreach 循环的代码块 2),但错误仍然存​​在。

function insertRecord() {
  var sheet_2 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[1];
  var sheet_1 = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var rows = sheet_1.getDataRange().getValues();

  rows.forEach(function(element) {
    iterator=element.length;
    for (i=0;i<iterator+1;i++){
      if (typeof element[i]=== Number){
        element[i]=element[i].toString
      }
    }
  });

  rows
  .filter(row => row[5] == '') 
  .map(row_w_empty5col => sheet_2.appendRow(row_w_empty5col));

}

当我在for (i=0;i<iterator+1;i++){看到您的脚本时,我认为i<iterator+1将是i<iterator 而且, element[i]=element[i].toStringtoString将是toString() 而且,当在循环中使用appendRow时,处理成本会很高。 参考

而且,关于moves rows with empty values in column 5 into another sheet工作表中,在您的脚本中, .filter(row => row[5] == '') 在这种情况下,第 6 列被选中。 为了检查第 5 列(“E”列),它是row[4]

从您当前的问题和目标来看,在您的情况下,复制数字格式如何? 当这反映在您的脚本中时,它变成如下。

修改后的脚本:

function insertRecord() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet_2 = ss.getSheets()[1];
  var sheet_1 = ss.getSheets()[0];
  var range = sheet_1.getDataRange();
  var rows = range.getValues();
  var f = range.getNumberFormats();
  var n = rows.reduce((ar, r, i) => {
    if (r[4].toString() == "") ar.push(i);
    return ar;
  }, []);
  var values = n.map(e => rows[e]);
  var formats = n.map(e => f[e]);
  sheet_2.getRange(sheet_2.getLastRow() + 1, 1, values.length, values[0].length).setValues(values).setNumberFormats(formats);
}

参考:

更新:稍微改变了我的代码,它现在可以工作了。

function emailEditor() {
  var app=SpreadsheetApp;
  var targetSht=app.getActiveSpreadsheet().getSheetByName('Linkedin Only');
  var spreadsheet=app.getActiveSpreadsheet().getSheets().length;
  for (i=0;i<spreadsheet;i++){
    var shts=app.getActiveSpreadsheet().getSheets()[i];
    var originalData=shts.getDataRange().getValues();
    var newData=originalData.filter(function(item){
      return item[5]===''; //user declared input here
      });
var begin=targetSht.getDataRange().getValues().length;
targetSht.getRange(begin+1,1,newData.length,newData[0].length).setValues(newData);
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2025 STACKOOM.COM