【问题标题】:Google Sheet (Script) copy Sheet to another SpreadSheet and name new sheet in target SSGoogle Sheet(脚本)将Sheet复制到另一个SpreadSheet并在目标SS中命名新工作表
【发布时间】:2020-12-29 00:04:24
【问题描述】:

我的脚本不是很好,因为我开始了,所以我想从 SpreadSheet(源)复制一个工作表,并通过创建一个新工作表(在目标 SS 中)将其复制到我的目标 SpreadSheet 并用我的值命名在我的源工作表的单元格 C9 中......

实际上,新工作表是使用新名称创建的,但在目标工作表中没有复制。问题似乎是我的 .copyTo(targetrange) ......我尝试了很多想法,但没有任何效果。

你能帮帮我吗!

function CopyToSpreadSheet() {

//Source sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Reception");
//Name new sheet in target SpreadSheet from value in cell C9
var nameSheet = sourceSheet.getRange(9, 3).getValue();

    //open target SpreadSheet
    var target = SpreadsheetApp.openById('SpreadSheet_Id');
    var newSheet = target.insertSheet();
    var Sheetname = newSheet.setName(nameSheet).getSheetName();
    //CopyTo...  
    var targetSheet = target.getSheetByName(nameSheet);
    var targetrange = targetSheet.getRange(1, 1, targetSheet.getLastRow()+1, targetSheet.getLastColumn()+1);
    var sourceRange = sourceSheet.getRange(1, 1, 80, 15).copyTo(targetrange).getValues();
    targetrange.setValues(sourceRange);
    
    
    return;
    
}```

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    解决方案

    copyTo 方法可用于工作表对象和范围对象。如果你想在 Range 实例上使用它,就像你正在做的那样:

        var sourceRange = sourceSheet.getRange(1, 1, 80, 15).copyTo(targetrange).getValues();
    
    

    它有一个限制:您不能将范围复制到不同的电子表格。

    建议修改

    您可以使用 Sheet 实例的copyTo 方法来获得所需的结果:

    function CopyToSpreadSheet() {
    
      //Source sheet
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sourceSheet = ss.getSheetByName("Reception");
      //Name new sheet in target SpreadSheet from value in cell C9
      var nameSheet = sourceSheet.getRange(9, 3).getValue();
    
      //open target SpreadSheet
      var target = SpreadsheetApp.openById('target-sheet-id');
    
      //CopyTo...
      var targetSheet = sourceSheet.copyTo(target);
      targetSheet.setName(nameSheet);
        
      return;
    }
    
    

    参考

    Sheet copyTo

    【讨论】:

    • 我不知道确切原因,但我收到此弹出窗口:异常:电子表格服务在访问标识符为 1DGv6CqLkry0uaLqN-HRRX0dODvBEr2qk...的文档时失败...此标识符是 ma sourceSheet...跨度>
    • 您尝试打开的电子表格是否可用?请再次检查电子表格 ID。
    • 在示例中,工作表标识符是目标电子表格而不是源。通过绑定的 Apps 脚本项目中调用的 .getActiveSpreadsheet() 方法访问它的源。
    • 好的,我知道了,但是 1DGv6CqLkry0uaLqN-HRRX0dODvBEr2qk 是我的 SS 的 ID。当 .getActiveSpreadsheet 在开始时直接激活时会发生错误。就像我的脚本无权打开活动工作表一样。什么可能阻止脚本到达我的活动表?感谢您的帮助!
    • 您能用您现在使用的代码更新您的问题吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    相关资源
    最近更新 更多