Google apps script 使用google应用程序脚本复制/粘贴值
这是我正在使用的数据的一个例子 我只将公式放在没有颜色的行上,有关日程安排的信息来自其他选项卡 绿色的是带有日期的颜色,我将其存储在数字中,蓝色的也包含公式,我想在粘贴值时跳过这些列,因为它们与另一个工作表相关,所以我无法粘贴值 我试过两种方法 这是我收到的第一条错误消息:异常:参数(编号[])与SpreadsheetApp.Range.setValues的方法签名不匹配。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
//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,谢谢您对变量的评论,我存储表格的地方是我要粘贴的整列信息。变量行是存储表格大小的地方,但我也使用了修改,它只粘贴了数据的第一行并按顺序粘贴值,而不是为存储的列粘贴值=/也许如果您提供一份包含数据的样本电子表格副本,并更详细地解释您的问题,它会变得更清晰?当然,只需要花点时间在这里进行记录和分享。感谢您的时间!我在帖子中添加了谷歌工作表的链接,这是数据共享的一个示例至少,我在工作中使用