Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 使用google应用程序脚本复制/粘贴值_Google Apps Script_Google Sheets_Google Sheets Formula - Fatal编程技术网

Google apps script 使用google应用程序脚本复制/粘贴值

Google apps script 使用google应用程序脚本复制/粘贴值,google-apps-script,google-sheets,google-sheets-formula,Google Apps Script,Google Sheets,Google Sheets Formula,这是我正在使用的数据的一个例子 我只将公式放在没有颜色的行上,有关日程安排的信息来自其他选项卡 绿色的是带有日期的颜色,我将其存储在数字中,蓝色的也包含公式,我想在粘贴值时跳过这些列,因为它们与另一个工作表相关,所以我无法粘贴值 我试过两种方法 这是我收到的第一条错误消息:异常:参数(编号[])与SpreadsheetApp.Range.setValues的方法签名不匹配。 //destination = sheet.getRange(1,colA[j],table.length,1) //d

这是我正在使用的数据的一个例子

我只将公式放在没有颜色的行上,有关日程安排的信息来自其他选项卡

绿色的是带有日期的颜色,我将其存储在数字中,蓝色的也包含公式,我想在粘贴值时跳过这些列,因为它们与另一个工作表相关,所以我无法粘贴值

我试过两种方法

这是我收到的第一条错误消息:异常:参数(编号[])与SpreadsheetApp.Range.setValues的方法签名不匹配。

//destination = sheet.getRange(1,colA[j],table.length,1)
//destination.setValues(table); // where we paste the values by column 
对于这一个,它粘贴在第一列的其他选项卡上

//sheet.getRange(1,colA[j],table.length,1).copyTo(sheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
这是我使用的脚本

function PasteValues() {
  var ss =  SpreadsheetApp.openById("...");
  var sheet = ss.getSheetByName("Testsheet");
  var rows = sheet.getDataRange().getValues();
  var dates = rows[2];
  //Logger.log(dates)
  var yesterday = new Date(Date.now() - 864e5);
  var numbers = [];
  
  
  for(var i = 2; i < dates.length; i++) {
    let columns = i
    if (dates[i]!==""  &&  dates[i] !== null){
      numbers.push(columns);
    }
    
    if (dates[i]==="") {
    continue;
    }
    if (dates[i].getDate() == yesterday.getDate() && dates[i].getMonth() == yesterday.getMonth() ){
      break;
    }
  }
  colA=numbers.slice(-5)


  var table = [];
  Logger.log(rows.length)
  Logger.log(colA)
  for(var j=0;j<colA.length;j++)
  { 
    table =[];
    for (var i = 0; i < rows.length;i++ )
    { 
     table[i] = rows[i][colA[j]];
    }
    Logger.log("the number of the column is: "+colA[j]);
    Logger.log(table);
    // where I paste the data

  }
  
}
函数粘贴值(){
var ss=SpreadsheetApp.openById(“…”);
var sheet=ss.getSheetByName(“测试表”);
var rows=sheet.getDataRange().getValues();
var日期=行[2];
//Logger.log(日期)
var Dayed=新日期(Date.now()-864e5);
var数=[];
对于(变量i=2;igetValues()
已经将它们以二维数组的形式返回给您-无需手动将它们转移到另一个数组中 您可以执行以下任一操作:

var table=sheet.getDataRange().getValues();
destination=sheet.getRange(1,statColumn,table.length,table[0].length);
destination.setValues(表);
或:

sheet.getDataRange.copyTo(sheet.getActiveRange(),SpreadsheetApp.CopyPasteType.PASTE_值,false);
更新 异常:参数(编号[])与方法签名不匹配 对于电子表格app.Range.setValues

表示您正试图将一行(一维数组)分配给一个范围(二维数组)

此外,如果
table
是行,则
table.length
将检索列数而不是行数

这可以通过定义以下内容轻松解决:
table=[table];

示例代码片段:


用于(var j=0;jI更新了我的答案,向您解释了错误来源。嘿@ziganotschka,谢谢您对变量的评论,我存储表格的地方是我要粘贴的整列信息。变量行是存储表格大小的地方,但我也使用了修改,它只粘贴了数据的第一行并按顺序粘贴值,而不是为存储的列粘贴值=/也许如果您提供一份包含数据的样本电子表格副本,并更详细地解释您的问题,它会变得更清晰?当然,只需要花点时间在这里进行记录和分享。感谢您的时间!我在帖子中添加了谷歌工作表的链接,这是数据共享的一个示例至少,我在工作中使用