在Google表格中,为什么我的录制宏在调用时还运行另外两个脚本?

时间:2018-09-06 09:22:25

标签: google-apps-script google-sheets google-sheets-macros

我已经在Sheets中记录了一个宏,其目的是使用条件格式添加色标。它工作正常,但完成时出现两个弹出窗口,提示“完成”。我将它们追溯到我过去使用过的其他两个应用程序脚本。 (注意:这些是脚本,不是录制的宏)

问:为什么当我使用分配的键盘快捷键调用宏时,是否还获得其他脚本的弹出窗口?脚本本身似乎无法完全运行(因为它们修改的范围未更改)。

这是录制的宏:

function CopyClientChannelUseBack(){
    /* Edit the vars below this line for your needs */
    var sourceSheet  = "12 mth Client channel use" ;  // Enter the name of the sheet with the source data
    var sourceRange = "A19:S29" ; // Enter the range of the cells with the source data
    var targetSheet = "12 mth Client channel use" ; // Enter the name of the target sheet  
    var targetRange = "A20:S30" ; // Enter the range of cells you wish to copy data to. Note this must be same size as source range.
    /* No need to edit below this point */  


    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName(sourceSheet);
    var values = sheet.getRange(sourceRange).getValues();
    ss.getSheetByName(targetSheet).getRange(targetRange).setValues(values);
  SpreadsheetApp.flush()

      /* Edit the vars below this line for your needs */
    var sourceSheet  = "12 mth Client channel use" ;  // Enter the name of the sheet with the source data
    var sourceRange = "A49:N59" ; // Enter the range of the cells with the source data
    var targetSheet = "12 mth Client channel use" ; // Enter the name of the target sheet  
    var targetRange = "A50:N60" ; // Enter the range of cells you wish to copy data to. Note this must be same size as source range.
    /* No need to edit below this point */ 

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName(sourceSheet);
    var values = sheet.getRange(sourceRange).getValues();
    ss.getSheetByName(targetSheet).getRange(targetRange).setValues(values);
  SpreadsheetApp.flush()      
  SpreadsheetApp.getUi().alert("Done")
}

由于上述宏的最后两行,这是产生弹出窗口的脚本之一。这是我从在线资源中改编而成的,所以我不太了解。

{
  "timeZone": "Europe/London",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "sheets": {
    "macros": [{
      "menuName": "Add colour scale",
      "functionName": "Addcolourscale",
      "defaultShortcut": "Ctrl+Alt+Shift+9"
    }]
  }
}

清单文件没有对脚本的引用,只有宏。

public class GooglePageObjects
{
    IWebDriver _webDriver;

    public GooglePageObjects(IWebDriver webDriver)
    {
        _webDriver = webDriver;
    }
}

1 个答案:

答案 0 :(得分:0)

好。我找出了问题所在。与我粘贴的代码无关。事实证明,我在其他脚本的末尾(实际上是在该函数的右括号之外)添加了一些代码。所以那几条线也在运行。 GAS似乎会遍历所有可用脚本,寻找刚刚被调用的脚本。由于功能之外存在代码,因此代码也正在执行。