google-apps-script - 将 Google 工作表值复制到另一个 Google 电子表格并使用按钮创建新工作表
问题描述
我希望你能提供帮助,我现在主要使用谷歌表格来完成我的所有工作,并试图让它变得有点自主。
所以我目前有一个模板表,可以多次复制以用于不同的项目。我想编写一个脚本,当我在模板的任何副本上单击 Sheet1('Home')上的按钮时,它会将 Sheet14('Workshop Prep')中的所有值复制到另一个现有电子表格中并创建一张新纸。
我尝试了各种不同的脚本并使用了“copyto”,它确实有效,但不只复制公式的值。我试过 CopyDatatoNewFile 但这必须覆盖另一个电子表格上的现有工作表。我不能在脚本中使用 getActiveSheet,因为我希望按钮位于不同的工作表上。
任何帮助将非常感激。抱歉,这是我第一次发帖。
谢谢
编辑 1 - 我尝试过的一些脚本:
var source = SpreadsheetApp.getActiveSheet();
var sheet = source.getSheets()[14];
var sValues = source.getDataRange().getValues();
var destination = SpreadsheetApp.openById('1-oro3Vf_YXH6QvQ_oQlTL723TTdACo3YxMI7XVnYsqI');
source.copyTo(destination)
var destinationSheet = destination.getSheetByName('Copy of '+sourceName)
destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues);
编辑 2 - 错误 - 类型错误:在对象表中找不到函数 getSheet。(第 3 行,文件“CopyTo”)
解决方案
要复制值而不是公式,您需要使用 getDisplayValues() 函数 [1] 而不是 getValues()。这是我想出的代码:
function myFunction() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = source.getSheetByName("Workshop Prep");
var destination = SpreadsheetApp.openById('[SPRADSHEET-ID]');
var destinationSheet = sourceSheet.copyTo(destination);
var sValues = sourceSheet.getDataRange().getDisplayValues();
destinationSheet.getRange(1,1,sValues.length,sValues[0].length).setValues(sValues);
}
[1] https://developers.google.com/apps-script/reference/spreadsheet/range#getDisplayValues()
推荐阅读
- python - Selenium webdriver:查找元素问题
- excel - 如果相应单元格包含“过期”一词,如何向特定收件人发送电子邮件?
- javascript - 将 WebAssembly 模块包装到 Web 组件中时出现异步问题
- android - Android Studio 北极狐 | 2020.3.1 Canary 14 找不到参数的方法 dependencyResolutionManagement()
- angularjs - 带有 AngularJS 指令的 Bootstrap 5 切换工具提示
- javascript - 如何通过异步函数创建动态href?
- protocol-buffers - “google.protobuf.Timestamp”未使用 Protobuf v2 定义
- azure - 获取模型时出错:无法在 Azure ADT 资源管理器中刷新访问令牌
- java - 如何在 Java JEditorPane 中自动将小写字母字符更新为大写字母?
- salesforce - 具有共享功能的 Salesforce Lightning 组件不起作用