【问题标题】:Need answer to “The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues” error需要回答“参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配”错误
【发布时间】:2020-09-18 23:27:24
【问题描述】:

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

    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 的方法签名不匹配

【问题讨论】:

标签: javascript google-apps-script google-sheets


【解决方案1】:

在您的脚本中,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);
      

参考:

【讨论】:

  • 但是当我尝试像这样s.push([keys[I]]); 推送时,我的功能无法正常工作(((
  • @Alexander Vaschuk 感谢您的回复。我带来的不便表示歉意。不幸的是,来自my function doesn't work correctly,我无法理解。这是因为我的英语水平不好。我对此深表歉意。我能问你关于你当前问题的细节吗?对此,我想考虑一下。顺便说一句,当您提供示例电子表格和当前脚本以复制您的问题时,我认为这将有助于思考问题。这个怎么样?
  • @Alexander Vaschuk 顺便说一句,在您的脚本中,使用了SpreadsheetApp.getUi().alert()。在这种情况下,当对话框没有关闭时,下一个脚本不会运行。请注意这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多