可点击的菜单Google表格脚本

时间:2018-07-18 09:05:52

标签: google-apps-script google-sheets

目前,我正在为我们的销售表开发菜单。目的是单击菜单项,然后跳到Google表格中的该单元格(将其视为大型表格文档的内容菜单)。

此刻,我有了一个手动输入菜单,因此我的同事可以进入该单元格。我将它们分为5个变量,所有这些变量都需要可单击(并且无需手动输入)。另外,所有这些单元都需要以某种方式是永久的,因此当我连续广告时,我不必再次编辑脚本。有人知道我该怎么做到吗?

代码如下:

Single<Integer> resultOfReduce = flowableObservable
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .reduce(0, new BiFunction<Integer, Integer, Integer>() {
        @Override
        public Integer apply(Integer result, Integer number) {
            //Log.e(TAG, "Result: " + result + ", new number: " + number);
            return result + number;
        }
    });
resultOfReduce.subscribe(observer); //this is the subscribe method from the Single class

2 个答案:

答案 0 :(得分:0)

我没有使用Google文档的经验,但是我建议从实施DRY原则开始。

function menuItem1() {
    openMenuItem('UREN', 'A191');
}

function openMenuItem(title, cell) {
    var strRange = Browser.inputBox("Om naar " + title + " te gaan vul dan in " + cell + ":", Browser.Buttons.OK_CANCEL);

    if(strRange != "cancel") {
        try {
            SpreadsheetApp.getActiveSheet().getRange(strRange).activate();
        }
        catch(e) {
            Browser.msgBox(e.message);
        }
    }
}

我什至不确定google docs使用哪种语言,我基于您的示例假设使用javascript,但如果没有,那么像我在openMenuItem的第一行中一样,如何使用变量将字符串连接起来:)

答案 1 :(得分:0)

在朋友的帮助下,我设法解决了第一个挑战(无需人工输入):

function onOpen() {
  SpreadsheetApp.getUi()
  .createMenu('Inhoudsopgave')
  .addItem('Uren', 'menuItem1')
  .addSeparator()
  .addItem('Marge','menuItem2')
  .addSeparator()   
  .addItem('Omzet','menuItem3')
  .addSeparator()  
  .addItem('Bonus','menuItem4')
  .addSeparator()  
  .addItem('Pie Charts','menuItem5')  
  .addToUi();
}
function menuItem1(){
  selectCell('A2');
}
function menuItem2(){
  selectCell('A191');
}
function menuItem3(){
  selectCell('A382');
}
function menuItem4(){
  selectCell('A581');
}
function menuItem5(){
  selectCell('A797');
}
function selectCell(cell){
  try
  {
    SpreadsheetApp.getActiveSheet().getRange(cell).activate();
  }
  catch(e) {
    Browser.msgBox(e.message);
  }
}

现在我们面临挑战,因此我不必在每次添加一行时都调整变量。这样做的目的是让脚本搜索特定的文本行(例如MARGE1X),以便每次有人有建议时,它都能找到该单元格?