For loop 当分配给宏按钮时,For循环不能正常工作?

For loop 当分配给宏按钮时,For循环不能正常工作?,for-loop,google-apps-script,google-sheets,For Loop,Google Apps Script,Google Sheets,对于术语上的任何混乱,我深表歉意,因为我刚刚开始学习使用谷歌应用程序脚本。我最近创建了一个GoogleSheets电子表格报告,以帮助监控帐户并记录任何客户端设备的问题()。我在“封面”上设置了一个“开始报告”按钮,用来触发下面列出的功能 function startReport() { hideSheet(); addXColumns(); }; function hideSheet() //Hides Coversheet from user's view. { var spr

对于术语上的任何混乱,我深表歉意,因为我刚刚开始学习使用谷歌应用程序脚本。我最近创建了一个GoogleSheets电子表格报告,以帮助监控帐户并记录任何客户端设备的问题()。我在“封面”上设置了一个“开始报告”按钮,用来触发下面列出的功能

function startReport()
{
  hideSheet();
  addXColumns();
};

function hideSheet() //Hides Coversheet from user's view.
{
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A3:B5').activate();
  spreadsheet.getActiveSheet().hideSheet();
};

function addXColumns() //Adds columns based on the fleet size inputted by the user.
{
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var fleetSize = sheet.getRange(3,3).getValue();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Report'), true);
  spreadsheet.getRange('D:D').activate();

  for (var i = 0; i < fleetSize; i++) //Performs steps through for loop until counter reaches fleetSize number based on user input.
  {
    spreadsheet.getActiveSheet().insertColumnsAfter(spreadsheet.getActiveRange().getLastColumn(), 1);
    spreadsheet.getActiveRange().offset(0, spreadsheet.getActiveRange().getNumColumns(), spreadsheet.getActiveRange().getNumRows(), 1).activate();
    spreadsheet.getActiveRangeList().setBorder(true, true, true, true, true, true, '#000000', SpreadsheetApp.BorderStyle.SOLID);
    spreadsheet.getRange('D6').activate();
    spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('D6:E6'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
    spreadsheet.getRange('D:D').activate();
  }

  spreadsheet.getRange('E5').activate();
};
在执行hideSheet()和addXColumns()函数后,工作表似乎没有从“封面”主动切换到“报告”。变量fleetSize的值是“封面”中的C3,而不是“报告”中的C3(这正是我要寻找的)

对此有任何见解都将不胜感激

  • 您想通过按下“开始报告”按钮,在
    封面
    的工作表上运行
    startReport()
    功能
  • 在共享电子表格中,“开始报告”按钮的函数名为
    myFunction
    。但是您想运行
    startReport()
    的函数
  • 您希望通过修改脚本来实现这一点
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改点:
  • 在脚本中,将使用活动工作表。因此,它使用
    getSheetByName()
    修复该工作表。
    • 这会反映到
      hideSheet()
      addXColumns()
修改脚本: 修改脚本时,请按以下方式修改

发件人: 致: 及

发件人: 致: 参考:
如果我误解了你的问题,而这不是你想要的方向,我道歉。

  • 您想通过按下“开始报告”按钮,在
    封面
    的工作表上运行
    startReport()
    功能
  • 在共享电子表格中,“开始报告”按钮的函数名为
    myFunction
    。但是您想运行
    startReport()
    的函数
  • 您希望通过修改脚本来实现这一点
如果我的理解是正确的,那么这个答案呢?请把这看作是几个可能的答案之一

修改点:
  • 在脚本中,将使用活动工作表。因此,它使用
    getSheetByName()
    修复该工作表。
    • 这会反映到
      hideSheet()
      addXColumns()
修改脚本: 修改脚本时,请按以下方式修改

发件人: 致: 及

发件人: 致: 参考:

如果我误解了您的问题,并且这不是您想要的方向,我深表歉意。

@Ontrak解决方案支持感谢您的回复。我很高兴您的问题得到解决。@Ontrak解决方案支持感谢您的回复。我很高兴你的问题解决了。
function hideSheet() //Hides Coversheet from user's view.
{
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A3:B5').activate();
  spreadsheet.getActiveSheet().hideSheet();
};

function addXColumns() //Adds columns based on the fleet size inputted by the user.
{
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var fleetSize = sheet.getRange(3,3).getValue();

  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Report'), true);
  spreadsheet.getRange('D:D').activate();
function hideSheet() //Hides Coversheet from user's view.
{
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A3:B5').activate();
  spreadsheet.getActiveSheet().hideSheet();
};
function hideSheet() //Hides Coversheet from user's view.
{
  var sheet = SpreadsheetApp.getActive().getSheetByName("Report");
  sheet.hideSheet();
};
function addXColumns() //Adds columns based on the fleet size inputted by the user.
{
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
function addXColumns() //Adds columns based on the fleet size inputted by the user.
{
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getSheetByName("Report");