如何在菜单按钮上的其他文档中运行功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在菜单按钮上的其他文档中运行功能相关的知识,希望对你有一定的参考价值。

我正在尝试运行脚本,因此单击菜单项时,将运行创建文本框的功能。我不知道如何不只在google app脚本中拆分文档并从菜单运行功能。

我试图将功能放置在菜单项中,但未与其他文档对话。

menu.js.gs

function onOpen() {
    var ui = SpreadsheetApp.getUi();
    // Or DocumentApp or FormApp.
    ui.createMenu('Custom Menu')
        .addItem('First item', 'menuItem1')
        .addSeparator()
        .addSubMenu(ui.createMenu('Sub-menu')
            function addTextBox(presentationId, pageId)
        .addToUi();
}

function menuItem1() {
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
        .alert('You clicked the first menu item!');
}

function menuItem2() {
    SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
        .alert('You clicked the second menu item!');
}

textbox.js.gs

/**
    * Add a new text box with text to a page.
    * @param {string} presentationId The presentation ID.
    * @param {string} pageId The page ID.
    */x
function addTextBox(presentationId, pageId) {
    // You can specify the ID to use for elements you create,
    // as long as the ID is unique.
    var pageElementId = Utilities.getUuid();

    var requests = [{
    'createShape': {
        'objectId': pageElementId,
        'shapeType': 'TEXT_BOX',
        'elementProperties': {
        'pageObjectId': pageId,
        'size': {
            'width': {
            'magnitude': 150,
            'unit': 'PT'
            },
            'height': {
            'magnitude': 50,
            'unit': 'PT'
            }
        },
        'transform': {
            'scaleX': 1,
            'scaleY': 1,
            'translateX': 200,
            'translateY': 100,
            'unit': 'PT'
        }
        }
    }
    }, {
    'insertText': {
        'objectId': pageElementId,
        'text': 'My Added Text Box',
        'insertionIndex': 0
    }
    }];
    var response =
        Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
    Logger.log('Created Textbox with ID: ' +
        response.replies[0].createShape.objectId);
}
答案

此:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
            function addTextBox(presentationId, pageId)
      .addToUi();
}

应该是这样:

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
  .addItem('First item Title', 'menuItem1')
  .addSubMenu(SpreadsheetApp.getUi().createMenu("My SubMenu")
  .addItem('Add Text Box','addTextBox'))
  .addToUi();
  //With other functions below this
}

但是很遗憾,您不能在菜单中使用带有参数的功能。

以上是关于如何在菜单按钮上的其他文档中运行功能的主要内容,如果未能解决你的问题,请参考以下文章

使用片段上的按钮更改片段

热门从另一个片段导航到主页片段

如何从活动意图到特定片段

从单个按钮从多个片段中提取数据

如何实现“最喜欢的”按钮功能(如最喜欢的食谱/食物)并显示在另一个片段的另一个列表中

如何在 Android 中显示和隐藏菜单项?