【问题标题】:How do I loop this Google Apps Script function?如何循环此 Google Apps 脚本功能?
【发布时间】:2020-10-07 16:19:29
【问题描述】:

我尝试在 Google 表格上创建一个宏,我做到了,而且效果很好,但我不知道如何让这个函数循环。

function ba() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('E6').activate();
  spreadsheet.getRange('D8').moveTo(spreadsheet.getActiveRange());
  spreadsheet.getRange('F6').activate();
  spreadsheet.getRange('D10').moveTo(spreadsheet.getActiveRange());
  spreadsheet.getRange('G6').activate();
  spreadsheet.getRange('D12').moveTo(spreadsheet.getActiveRange());
  spreadsheet.getRange('D6:G6').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet9'), true);
  spreadsheet.getRange('D6').activate();
  spreadsheet.getRange('Sheet8!D6:G6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet8'), true);
  spreadsheet.getRange('D6:G14').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('D14'));
  spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
};

注意:我尝试在函数下方添加以下片段,但它不起作用。

for (var i = 0; i < 10; i++) {
    Logger.log(i);
}

【问题讨论】:

  • 我建议您遵循一些基本的 javascript 教程。 :)
  • @Calculuswhiz 我的意思是让宏多次重复相同的操作。每当脚本完成时,它就会再次运行。谢谢! :)
  • 到目前为止你尝试了什么?你在 Javascript 中搜索过how to create a loop 吗?你想要多少次迭代?
  • @Marios 是的,我试过了。我在不同的网站上阅读了一些帖子,并在 youtube 上观看了一些视频。但这对我来说有点先进,因为我不是开发人员。我尝试在函数末尾添加此代码:for (var i = 0; i &lt; 10; i++) { Logger.log(i); },但它不起作用。
  • @KhalidELBAZ 您应该将您尝试过的 sn-p 添加到您的问题中。

标签: javascript for-loop google-apps-script google-sheets


【解决方案1】:

我实际上设法完成了这项工作。 (感谢@Calculuswhiz 的提示和其他尝试提供帮助的人)

我在函数末尾添加了如下sn-p:

    for (var i = 0; i < 10; i++) {
        Logger.log(i);
    }

我用我想要重复的内容替换了Logger.log(i);。下面是最终结果


    function ba() {
      var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange('E6').activate();
      spreadsheet.getRange('D8').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('F6').activate();
      spreadsheet.getRange('D10').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('G6').activate();
      spreadsheet.getRange('D12').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('D6:G6').activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet9'), true);
      spreadsheet.getRange('D6').activate();
      spreadsheet.getRange('Sheet8!D6:G6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
      spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
      spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet8'), true);
      spreadsheet.getRange('D6:G14').activate();
      spreadsheet.setCurrentCell(spreadsheet.getRange('D14'));
      spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
      
      for (var i = 0; i < 400; i++) {
      spreadsheet.getRange('E6').activate();
      spreadsheet.getRange('D8').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('F6').activate();
      spreadsheet.getRange('D10').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('G6').activate();
      spreadsheet.getRange('D12').moveTo(spreadsheet.getActiveRange());
      spreadsheet.getRange('D6:G6').activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet9'), true);
      spreadsheet.getRange('D6').activate();
      spreadsheet.getRange('Sheet8!D6:G6').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
      spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
      spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Sheet8'), true);
      spreadsheet.getRange('D6:G14').activate();
      spreadsheet.setCurrentCell(spreadsheet.getRange('D14'));
      spreadsheet.getActiveSheet().deleteRows(spreadsheet.getActiveRange().getRow(), spreadsheet.getActiveRange().getNumRows());
    }
    };

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    • 2018-05-26
    相关资源
    最近更新 更多