首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >应用程序脚本的电子表格"copyTo()“写入范围两次?

应用程序脚本的电子表格"copyTo()“写入范围两次?
EN

Stack Overflow用户
提问于 2021-07-19 21:26:08
回答 2查看 57关注 0票数 1

亨罗!我被谷歌应用程序脚本(相对于工作表)中的一个奇怪的bug卡住了,我在互联网上找不到任何响应。

我有一个带有过滤器(大约370行)的工作表,并且我正在尝试将它的值复制到另一个工作表。但是当我这样做的时候,出于某种原因,370行被复制了2次,我完全不知道为什么。结果表是370行+一个空白行+ 370行。

下面是我使用的代码:

代码语言:javascript
运行
复制
  var spreadsheet = SpreadsheetApp.openById(spreadsheetID);
  var init_sheet = spreadsheet.getSheetByName("default");
  var final_sheet = spreadsheet.insertSheet("final");


  var soure_range = init_sheet.getRange("A1:K");
  var target_range = final_sheet.getRange("N1:X");
  soure_range.copyTo(target_range);

如果有人知道为什么范围被复制了2次,我很高兴得到解开:x

编辑:

正如评论中所讨论的,这个bug似乎只有在我使用从xlsx转换而来的工作表时才会出现(上面的函数在任何其他普通工作表上都可以正常工作)。下面是我使用的转换函数:

代码语言:javascript
运行
复制
function convert(xlsxID, name, parentFolder) { 
  var xlsxBlob = DriveApp.getFileById(xlsxID).getBlob();
  var file = {
    title: ,
    //Which Drive Folder do you want the file to be placed in
    parents: [{'id':parentFolder}],
    key: 'XXXX',
    value: 'XXXX',
    visibility: 'PRIVATE'
  };

  file = Drive.Files.insert(file, xlsxBlob, {
    convert: true
  });

  return file.getId();
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-20 23:48:56

我能够复制这个问题。最初,我没有过滤转换后的xlsx文件中的数据。

使用copyTo(destination)复制范围时。使用destination区域的左上角单元格位置。

示例代码:

代码语言:javascript
运行
复制
  var spreadsheet = SpreadsheetApp.openById(spreadsheetID);
  var init_sheet = spreadsheet.getSheetByName("Feuil1");
  var final_sheet = spreadsheet.insertSheet("final");


  var soure_range = init_sheet.getRange("A1:K");
  var target_range = final_sheet.getRange("N1"); //Top-left cell position
  soure_range.copyTo(target_range);

输出:

票数 1
EN

Stack Overflow用户

发布于 2021-07-19 22:07:33

代码语言:javascript
运行
复制
const ss = SpreadsheetApp.openById(spreadsheetID);
const ish = ss.getSheetByName("default");
const fsh = ss.insertSheet("final");
const srg = ish.getRange(1,1,ish.getLastRow(),11);
const vs = srg.getValues();
const trg = fsh.getRange(1,14,vs.length,vs[0].length);
srg.copyTo(trg);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68441279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档