Google apps script 连接字符串的一部分

Google apps script 连接字符串的一部分,google-apps-script,google-sheets,string-concatenation,Google Apps Script,Google Sheets,String Concatenation,我在A列中有一个函数,用于连接一些单元格以生成ID: 我试图用脚本替换函数,但我的代码不起作用。 怎么了 function concatenate() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); var lr = sheet.getLastRow() var values1 = sheet.getSheetVa

我在A列中有一个函数,用于连接一些单元格以生成ID:

我试图用脚本替换函数,但我的代码不起作用。 怎么了

function concatenate() {
      var sheet = SpreadsheetApp.getActiveSheet();
      var data = sheet.getDataRange().getValues();
      var lr = sheet.getLastRow()
      var values1 = sheet.getSheetValues(2, 3, lr, 1);
      var values2 = sheet.getSheetValues(2, 4, lr, 1);
      var values3 = sheet.getSheetValues(2, 5, lr, 1);
      var values4 = sheet.getSheetValues(2, 2, lr, 1);
      var results = [];
      for (var i = 0; i < lr; i++) {
        results.push([values1[i][0].slice(0,1) + "-" + values2[i][0].slice(0,1) + values3[i][0].slice(0,1) + "-" + values4[i][0].slice(-8)]);
      }
      sheet.getRange(2, 1, results.length).setValues(results);
    }
附言。
如何在每次对行进行编辑时也运行脚本?

是否确定这不是您想要的

function concatenate() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var results = [];
  for (var i=1;i<data.length; i++) {//if you have a header row start from one
    results.push([data[i][2].slice(0,1) + "-" + data[i][3].slice(0,1) + data[i][4].slice(0,1) + "-" + data[i][1].slice(-8)]);
  }
  sheet.getRange(2, 1, results.length,1).setValues(results);
}

当它工作时,输出应该是什么。不工作意味着什么。如果您想让它在用户手动编辑单元格的地方运行,请阅读文档中的触发器。我有一个错误:TypeError:values4[I][0]。slice不是函数riga 11,文件代码values4[I][0]是什么?如果它不是字符串或数组,那么slice就不是方法。尝试使用调试器了解更多有关正在进行的操作。我希望将C列的第一个字符、D列的第一个字符、E列的第一个字符和B列值的最后八个字符连接起来4[I][0]。顺便说一句,此行var values1=sheet.getSheetValues2,3,lr,1;应为var值1=sheet.getSheetValues2,3,lr-1,1;以及所有其他类似的线路。目前,你的循环结束了你的数据。第三个参数是不是最后一行的行数。
function concatenate() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var results = [];
  for (var i=1;i<data.length; i++) {//if you have a header row start from one
    results.push([data[i][2].slice(0,1) + "-" + data[i][3].slice(0,1) + data[i][4].slice(0,1) + "-" + data[i][1].slice(-8)]);
  }
  sheet.getRange(2, 1, results.length,1).setValues(results);
}