首页 > 解决方案 > 需要回答“参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配”错误

问题描述

请帮助我了解发生了什么。我有代码

    function splitWords() {
  var list = SpreadsheetApp.getActiveSheet();
  var list_Key = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Keys');
  if (list.getName() !== list_Key.getName()) {
    SpreadsheetApp.getUi().alert('Для работы функции перейдите на страницу Keys');
  } else {
    var array = list.getRange('C2:C').getValues();
    var t_array = array.filter(String).lenght;
    SpreadsheetApp.getUi().alert(array);
    var array1 = array.reduce(function (s, c) {
      var key = c[0];
      var keys = key.split(" ");
      for (var i in keys) {
        if (!s.includes(keys[i])) {                                       
          s.push(keys[i])
        }
      }
      return s;
    }, []);
     SpreadsheetApp.getUi().alert(array1);

    SpreadsheetApp.getActive().getActiveSheet().getRange(2,8,array1.length,array1[0].length).setValues(array1);
  }

}

当代码来到setValues()我有错误。参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


在您的脚本中,array1是一维数组。但它需要是二维数组serValues。我认为这是您的问题的原因。当您要将 的值放入array1从“H2”到行方向的范围内时,需要将 的每个元素包含array1在一个数组中。那么下面的修改呢?

从:

s.push(keys[i])

至:

s.push([keys[i]]);

笔记:

  • 你想把的值放到array1从“H2”到列方向的范围内,下面的修改怎么样?

    • 从:

        SpreadsheetApp.getActive().getActiveSheet().getRange(2,8,array1.length,array1[0].length).setValues(array1);
      
    • 至:

        array1 = [array1];
        SpreadsheetApp.getActive().getActiveSheet().getRange(2,8,array1.length,array1[0].length).setValues(array1);
      

参考:


推荐阅读