【问题标题】:The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.setValues参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配
【发布时间】:2020-03-12 02:38:24
【问题描述】:

我的 Apps 脚本代码的最后一行出现以下错误 - “异常:参数 (number[]) 与 SpreadsheetApp.Range.setValues 的方法签名不匹配。 (第 52 行,文件“TaskCompletionDate”)”

代码使用 sheet.getDataRange() 获取电子表格范围,并根据特定条件从该范围选取值到名为 Col8 的列数组中。 数组 Col8 完全写入后,我将这个 Col8 粘贴到我的电子表格中。错误是指这一步。

我的代码的缩短版如下:

var spreadsheet = SpreadsheetApp.openById("Spreadsheet_ID");
var sheet = spreadsheet.getSheetByName("Sheet_name"); 

var rows = sheet.getLastRow();  
var range = sheet.getDataRange();
var values = range.getValues();
var today = new Date();
var yesterday = new Date();
yesterday.setDate(today.getDate()-1);
var Col8 = new Array(rows-1,1);

for (var i=2; i<=rows; i++)
    {
          if (values[i-1][1] == "Completed") 
         {
           if (!values[i-1][8]) 
           Col8[i-1][1].setValue(values[i-1][1]);        
          }
      }

  sheet.getRange(2,8,rows-1,1).setValues(Col8);

Spreadsheet columns can be seen here

我错过了什么? 我不是程序员,也不知道 JavaScript 或 Apps Script,但一直在使用 App Script 文档和网上其他 app 脚本资源构建小型 Apps Script sn-ps。

【问题讨论】:

  • 我很乐意为您提供帮助。如果您可以提供问题中涉及的工作表的图像,那将会很有帮助。请确保图像显示行和列以及列标题。
  • 错误的原因是你的变量 Col8 需要是一个二维数组,而它不是。我可以用你的工作表图片帮你解决这个问题。

标签: google-apps-script google-sheets


【解决方案1】:

这是基本的起点。但我需要您的电子表格图像中的信息,以确保索引正确。我注意到您创建了今天和昨天,但实际上并没有使用它们。

function myfunvtion() {
  var ss=SpreadsheetApp.openById("Spreadsheet_ID");
  var sh=ss.getSheetByName("Sheet_name"); 
  var rg=sh.getRange(2,1,sh.getLastRow()-1,sh.getLastColumn());
  var vs=rg.getValues();
  var today=new Date();
  var yesterday=new Date(today.getFullYear(),today.getMonth(),today.getDate()-1);
  var oA=[];
  for (var i=0; i<vs.length;; i++) {
    if (values[i][1]=="Completed" && !values[i][18]) {
      oA.push([vs[i][1]]);//it looks like your fixing something in your spreads        
    }
  }
  sh.getRange(2,8,oA.length,1).setValues(oA);
}

【讨论】:

  • 感谢库珀。这是链接 - docs.google.com/spreadsheets/d/… 今天和昨天没有使用,因为我在 stackoverflow 中发布我的代码的缩短版本时忘记将它们取下!
  • 我希望在您的问题中发布一张图片。
  • 图片已发布。我知道我没有正确声明二维数组。您提供的代码对我来说很好。我可以根据我的确切需要对其进行调整。我现在唯一需要帮助的是 - 将空值推送到 oA。怎么做?当 if 条件不满足时,我会向 oA 推送一个空值。
  • 好吧我猜vs[i][1]='';oA.push([vs[i][1]]);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 2018-01-15
  • 1970-01-01
相关资源
最近更新 更多