google-apps-script - 如何在一个 Google Sheets 工作簿中的多个选项卡上执行相同的功能?
问题描述
我正在尝试在同一工作簿中的 30 个选项卡上执行一个简单的复制粘贴脚本。
工作簿布局 - 30 支 NBA 球队中的每支球队都有一个标签 - 每个标签都被命名为不同的球队 - 以及其他三个摘要标签(总共 33 个)。每个团队特定选项卡的格式都是相同的。单元格中的值对于团队选项卡是唯一的,但列 G,例如,是 30 个团队选项卡中的每个选项卡中的“主队”。
目标 - 我正在尝试复制 D 列并将其粘贴到工作簿中每个团队选项卡的 F 列中。我的想法是我会为每个选项卡编写脚本,然后在工作簿中将它们串在一起。以下是我对小牛队的看法:
function primeMavericks() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Mavericks');
var rg=sh.getRange('D3:D33');
var vA=rg.getValues();
var tsh=ss.getRange('F3:F33');
tsh.setValues(vA);
}
问题 - 这对一个团队来说很好,但是第二个我开始为其他团队输入函数时,脚本开始将 D 列中的数据粘贴到不同团队的选项卡中。例如,下面将湖人队的 D 列粘贴到快船队的 F 列。如果我在其他 28 支队伍中串连,那将变得绝对混乱。
function primeLakers() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Lakers');
var rg=sh.getRange('D3:D33');
var vA=rg.getValues();
var tsh=ss.getRange('F3:F33');
tsh.setValues(vA);
primeClippers();
}
function primeClippers(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Clippers');
var rg=sh.getRange('D3:D33');
var vA=rg.getValues();
var tsh=ss.getRange('F3:F33');
tsh.setValues(vA);
}
我认为这可能是因为我的变量具有相同的名称(尽管嵌套在不同的函数中)。作为尝试的修复,我返回并让每个变量名都是唯一的,但仍然遇到了相同的复制/粘贴问题。
我不知道在这里做什么......有没有更好的方法来运行这个脚本来获得预期的结果?
解决方案
只需使用 for 循环来遍历工作表。如果要排除特定选项卡,可以使用条件来完成。像这样的东西应该有效:
function NBA (){
var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets();
for (var i=0; i < sheets.length; i++){
if (sheets[i].getName() == "sheetToExclude"){
continue;
}
var rg = sheets[i].getRange('D3:D33');
var vA = rg.getValues();
var tsh = sheets[i].getRange('F3:F33');
tsh.setValues(vA);
}
}
推荐阅读
- codenameone - 代号 一个 EasyThread 实现,如果结果为 false 则重复运行
- python - 从文件逐像素读取numpy数组?
- java - 平台模块应用程序(netbeans 7.3.1)中的 netbeans 缺少库
- javascript - Onchange event in dynamic table html
- angular - Defining type of variable as number does not throw error even if value is string --TypeScript, Angular
- ruby-on-rails - Rails - Multiple Select Update all objects of model
- wordpress - Wordpress:由于本地主机上的 Duplicator 插件,媒体文件 URL 损坏
- spring - 字段注入时的循环依赖
- python - 解压元组时输入提示?
- java - 从 XMLnode 读取值