按下指定按钮后,将数据复制并粘贴回选项卡



我正在尝试创建一个应用程序脚本,并将其分配给选项卡中的一个按钮。该按钮将通过进入另一个基本相同的"Fixer"工作表来修复当前工作表。然后,将所有配方从定影器重新粘贴到激活按钮的工作表中。

功能表和修复程序表之间的区别在于,功能表有一个应用程序脚本,可以将选项卡名称更改为特定的单元格引用。此单元格包含的人名也会影响工作表中的所有数据。

第二段中的功能是我在创建代码时遇到的问题。该工具的性质是流动的,可以定期添加和替换名称引用。然而,当我从功能表中移出时,它会映射到将固有更改的选项卡名称,从而使我的代码变得无用。

我需要找到一种方法,使数据粘贴回按下按钮时的活动选项卡。

下面的代码来自我一直试图操作的基础。

function FixTab() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Fix Sheet'), true);
spreadsheet.getRange('A:N').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('PersonX'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Fix Sheet'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('PersonX'), true);
spreadsheet.getRange(''Fix Sheet'!A:N').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
spreadsheet.getRange('E4:F4').activate();
spreadsheet.getRange('U4:V4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

看起来您需要花费一些时间来学习JavaScript的基础知识,比如如何声明变量。

下一行是变量声明,它将活动工作表分配给变量sheet

const sheet = SpreadsheetApp.getActiveSheet();

以上内容应添加到函数的开头。然后更换

spreadsheet.getRange('U4:V4').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

通过

spreadsheet.getRange('U4:V4').copyTo(sheet.getRange('A1'), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);

其中A1应该是应该粘贴复制的范围的范围的左上角单元格的地址。

最新更新