Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 从电子表格调用时出错,从菜单中可以正常工作_Google Apps Script_Google Sheets_Custom Function - Fatal编程技术网

Google apps script 从电子表格调用时出错,从菜单中可以正常工作

Google apps script 从电子表格调用时出错,从菜单中可以正常工作,google-apps-script,google-sheets,custom-function,Google Apps Script,Google Sheets,Custom Function,所以,在谷歌应用程序脚本首次发布时,我做了一些工作,但最近我很少使用它们。今天早上,我决定写一个新剧本。一切看起来都很棒,我喜欢这些新功能。然而,有一件非常简单的事情以前是有效的,现在却被打破了(或者说我只是个傻瓜) 当我从菜单中调用某个特定函数时,它工作正常。但当我直接从电子表格中调用它时,我得到: 您没有调用inputBox(第17行)的权限 奇怪的是,我甚至没有打电话给输入框。有一组事件可以在其中调用输入框,但只有在未设置特定变量(全局变量)的情况下才可以调用输入框,在本例中,该变量已设置

所以,在谷歌应用程序脚本首次发布时,我做了一些工作,但最近我很少使用它们。今天早上,我决定写一个新剧本。一切看起来都很棒,我喜欢这些新功能。然而,有一件非常简单的事情以前是有效的,现在却被打破了(或者说我只是个傻瓜)

当我从菜单中调用某个特定函数时,它工作正常。但当我直接从电子表格中调用它时,我得到:

您没有调用inputBox(第17行)的权限

奇怪的是,我甚至没有打电话给输入框。有一组事件可以在其中调用输入框,但只有在未设置特定变量(全局变量)的情况下才可以调用输入框,在本例中,该变量已设置

我想也许我只是有一只虫子。所以,我看了看我的旧应用程序脚本(它曾经确实有效)。我现在也遇到了同样的问题。所以,无论发生了什么变化,它也打破了旧的脚本。为了完整起见,我现在加入了我的脚本代码。我试图直接调用的函数是管道和活动:

var webhookurl = "";

var jsondata = [];

function __urlCheck_(str) {
    var v = new RegExp(); 
    v.compile("^[A-Za-z]+://[A-Za-z0-9-_]+\\.[A-Za-z0-9-_%&\?\/.=]+$");
    if (!v.test(str)) {
        return false;
    }
    return true;
}

function __getWebHook_(){
    var newwebhookurl = UserProperties.getProperty('webhookurl_HCR');
    if((newwebhookurl == null || newwebhookurl.length==0) && (webhookurl.length==0 || webhookurl==null)){
        var newwebhookurl = Browser.inputBox("Paste your web hook url here");
        var newwebhookurl = newwebhookurl.replace(/^\s*/, '').replace(/\s*$/, '');
        if('cancel' == newwebhookurl.toLowerCase()){
            Browser.msgBox('Before this connection will work, you will have to enter a webhook url.');
        }else if(newwebhookurl.length==0 || newwebhookurl == null || __urlCheck_(newwebhookurl) == false){
            Browser.msgBox('Sorry, you must specify a webhook url.');
            __getWebHook_();
        }else{
            UserProperties.setProperty('webhookurl_HCR',newwebhookurl);
            webhookurl = newwebhookurl;
        }
    }else if(webhookurl.length==0 || webhookurl==null){
        webhookurl = newwebhookurl;
    }
}


function __ClearWebHook_(){
    UserProperties.setProperty('webhookurl_HCR','');
    webhookurl = '';
    __getWebHook_();
}


function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var menuEntries = [{name: "Pipeline", functionName: "__PipelineMenu__"}, 
                     {name: "Activity", functionName: "__ActivityMenu__"},
                     {name: "Reset WebHook", functionName: "__ClearWebHook_"}
                     ];
  ss.addMenu("Heap CRM Reports", menuEntries);

}


function onInstall(){
    onOpen();
}

function __PipelineMenu__(){
    var mydoc = SpreadsheetApp.getActiveSpreadsheet();
    var myapp = UiApp.createApplication().setTitle('Pipeline');
    var mygrid = myapp.createGrid(5, 2);
    mygrid.setWidget(0, 0, myapp.createLabel('Category:'));
    mygrid.setWidget(0, 1, myapp.createTextBox().setName('category'));
    mygrid.setWidget(1, 0, myapp.createLabel('Label:'));
    mygrid.setWidget(1, 1, myapp.createTextBox().setName('label'));
    mygrid.setWidget(2, 0, myapp.createLabel('User:'));
    mygrid.setWidget(2, 1, myapp.createTextBox().setName('user'));
    mygrid.setWidget(3, 0, myapp.createLabel('Type:'));
    var lbt = myapp.createListBox(false).setName('type');
    lbt.setVisibleItemCount(1);
    lbt.addItem('Lead');
    lbt.addItem('Opportunity');
    lbt.addItem('Customer');
    mygrid.setWidget(3, 1, lbt);
    mygrid.setWidget(4, 0, myapp.createLabel('Kind:'));
    var lbk = myapp.createListBox(false).setName('kind');
    lbk.setVisibleItemCount(1);
    lbk.addItem('Expected Value');
    lbk.addItem('Value');
    lbk.addItem('Count');
    mygrid.setWidget(4, 1, lbk);
    var panel = myapp.createVerticalPanel();
    panel.add(mygrid);
    var button = myapp.createButton('Submit');
    var handler = myapp.createServerClickHandler('__processPipeline');
    handler.addCallbackElement(mygrid);
    button.addClickHandler(handler);
    panel.add(button);
    myapp.add(panel);
    mydoc.show(myapp);
}


function __ActivityMenu__(){
    var mydoc = SpreadsheetApp.getActiveSpreadsheet();
    var myapp = UiApp.createApplication().setTitle('Activity');
    var mygrid = myapp.createGrid(7, 2);
    mygrid.setWidget(0, 0, myapp.createLabel('Category:'));
    mygrid.setWidget(0, 1, myapp.createTextBox().setName('category'));
    mygrid.setWidget(1, 0, myapp.createLabel('Label:'));
    mygrid.setWidget(1, 1, myapp.createTextBox().setName('label'));
    mygrid.setWidget(2, 0, myapp.createLabel('User:'));
    mygrid.setWidget(2, 1, myapp.createTextBox().setName('user'));
    mygrid.setWidget(3, 0, myapp.createLabel('Date:'));
    mygrid.setWidget(3, 1, myapp.createDateBox().setId('date'));
    mygrid.setWidget(4, 0, myapp.createLabel('Range:'));
    var lb = myapp.createListBox(false).setName('range');
    lb.setVisibleItemCount(1);
    lb.addItem('Week');
    lb.addItem('Month');
    lb.addItem('Year');
    mygrid.setWidget(4, 1, lb);
    mygrid.setWidget(5, 0, myapp.createLabel('Type:'));
    var lbt = myapp.createListBox(false).setName('type');
    lbt.setVisibleItemCount(1);
    lbt.addItem('Lead');
    lbt.addItem('Opportunity');
    lbt.addItem('Customer');
    mygrid.setWidget(5, 1, lbt);
    mygrid.setWidget(6, 0, myapp.createLabel('Kind:'));
    var lbk = myapp.createListBox(false).setName('kind');
    lbk.setVisibleItemCount(1);
    lbk.addItem('Expected Value');
    lbk.addItem('Value');
    lbk.addItem('Count');
    mygrid.setWidget(6, 1, lbk);
    var panel = myapp.createVerticalPanel();
    panel.add(mygrid);
    var button = myapp.createButton('Submit');
    var handler = myapp.createServerClickHandler('__processActivity');
    handler.addCallbackElement(mygrid);
    button.addClickHandler(handler);
    panel.add(button);
    myapp.add(panel);
    mydoc.show(myapp);
}


function __processActivity(inputvalues){
    var category = inputvalues.parameter.category;
    var label = inputvalues.parameter.label;
    var user = inputvalues.parameter.user;
    var date = inputvalues.parameter.date;
    var range = inputvalues.parameter.range;
    var type = inputvalues.parameter.type;
    var kind = inputvalues.parameter.kind;
    var answer = Activity(kind,type,date,range,category,user,'',label);
    var mysheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    mysheet.getActiveCell().setValue(answer);
    var app = UiApp.getActiveApplication();
    app.close();
    return app;
}

function Activity(kind,type,date,range,category,user,mylabel,label){
    var kind = kind || '';
    var type = type || '';
    var category = category || '';
    var user = user || '';
    var mylabel = mylabel || '';
    var label = label || '';
    var range = range || '';
    var date = date || '';
    var data = __getData_('activity ' + kind,category,user,label,mylabel,date,range);
    var type = type.toLowerCase();
    if(type=='lead' && data.hasOwnProperty('lead')==true){
        return data['lead'];
    }else if(type=='customer' && data.hasOwnProperty('customer')==true){
        return data['customer'];
    }else if(type=='opportunity' && data.hasOwnProperty('opportunity')==true){
        return data['opportunity'];
    }else{
        return 0;
    }
}

function Pipeline(kind,type,category,user,mylabel,label){
    var kind = kind || '';
    var type = type || '';
    var category = category || '';
    var user = user || '';
    var mylabel = mylabel || '';
    var label = label || '';
    var data = __getData_('pipeline ' + kind,category,user,label,mylabel);
    var type = type.toLowerCase();
    if(type=='lead' && data.hasOwnProperty('lead')==true){
        return data['lead'];
    }else if(type=='customer' && data.hasOwnProperty('customer')==true){
        return data['customer'];
    }else if(type=='opportunity' && data.hasOwnProperty('opportunity')==true){
        return data['opportunity'];
    }else{
        return 0;
    }
}

function __processPipeline(inputvalues){
    var category = inputvalues.parameter.category;
    var label = inputvalues.parameter.label;
    var user = inputvalues.parameter.user;
    var type = inputvalues.parameter.type;
    var kind = inputvalues.parameter.kind;
    var answer = Pipeline(kind,type,category,user,'',label);
    var mysheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    mysheet.getActiveCell().setValue(answer);
    var app = UiApp.getActiveApplication();
    app.close();
    return app;
} 

function __getData_(mlist,mcategory,muser,label,mlabel,mdate,mrange) {
    var addon = '';
    var mlist = mlist || '';
    var mcategory = mcategory || '';
    var muser = muser || '';
    var label = label || '';
    var mlabel = mlabel || '';
    var mdate = mdate || '';
    var mrange = mrange || '';
    if(mcategory.length>0){
        addon = addon + "&category=" + encodeURIComponent(mcategory);
    }
    if(muser.length>0){
         addon = addon + "&user=" + encodeURIComponent(muser);
    }
    if(mlabel.length>0){
         addon = addon + "&mylabel=" + encodeURIComponent(mlabel);
    }
    if(label.length>0){
        addon = addon + "&label=" + encodeURIComponent(label);
    }
    if(mdate.length>0){
         addon = addon + "&date=" + encodeURIComponent(mdate);
    }
    if(mrange.length>0){
        addon = addon + "&range=" + encodeURIComponent(mrange);
    }
    __getWebHook_();

    if(webhookurl.length==0 || webhookurl == null){
        return [];
    }
    addon = "&list=" + encodeURIComponent(mlist) + addon;
    for(i=0;i<jsondata.length;i++){
        if(jsondata[i]['addon'].toLowerCase() == addon.toLowerCase()){
            return jsondata[i]['json'];
        }
    }

    var url = webhookurl + addon;
    var response = UrlFetchApp.fetch(url);
    if (response.getResponseCode() == 200) {
        var newid = jsondata.length;
        jsondata[newid] = {};
        jsondata[newid].json = Utilities.jsonParse(response.getContentText());
        jsondata[newid].addon = addon.toLowerCase();
        return jsondata[newid].json;
    }
}
var-webhookurl=”“;
var jsondata=[];
函数uuUrlCheck(str){
var v=新的RegExp();
v、 编译(“^[A-Za-z]+://[A-Za-z0-9-\]+\.[A-Za-z0-9-\%&\?\/.=]+$”;
如果(!v.测试(str)){
返回false;
}
返回true;
}
函数{
var newwebhookurl=UserProperties.getProperty('webhookurl_HCR');
如果((newwebhookurl==null | | newwebhookurl.length==0)和&(webhookurl.length==0 | | webhookurl==null)){
var newwebhookurl=Browser.inputBox(“在此处粘贴您的web钩子url”);
var newwebhookurl=newwebhookurl.replace(/^\s*/,'').replace(/\s*$/,'');
if('cancel'==newwebhookurl.toLowerCase()){
msgBox('在此连接工作之前,您必须输入一个webhook url');
}else if(newwebhookurl.length==0 | | newwebhookurl==null | | | uuUrlCheck(newwebhookurl)==false){
msgBox('抱歉,您必须指定webhook url');
__getWebHook_u2;();
}否则{
setProperty('webhookurl\u HCR',newwebhookurl);
webhookurl=newwebhookurl;
}
}else if(webhookurl.length==0 | | webhookurl==null){
webhookurl=newwebhookurl;
}
}
函数{
setProperty('webhookurl\u HCR','');
webhookurl='';
__getWebHook_u2;();
}
函数onOpen(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var menuEntries=[{name:“Pipeline”,functionName:“\uuuu PipelineMenu\uuuu”},
{name:“活动”,functionName:“\u活动菜单”},
{name:“重置WebHook”,functionName:“\uuuu ClearWebHook”}
];
ss.addMenu(“堆CRM报告”,菜单);
}
函数onInstall(){
onOpen();
}
函数_uu管道菜单_uu(){
var mydoc=SpreadsheetApp.getActiveSpreadsheet();
var myapp=UiApp.createApplication().setTitle('Pipeline');
var mygrid=myapp.createGrid(5,2);
mygrid.setWidget(0,0,myapp.createLabel('Category:');
mygrid.setWidget(0,1,myapp.createTextBox().setName('category');
mygrid.setWidget(1,0,myapp.createLabel('Label:');
mygrid.setWidget(1,1,myapp.createTextBox().setName('label');
mygrid.setWidget(2,0,myapp.createLabel('User:');
mygrid.setWidget(2,1,myapp.createTextBox().setName('user'));
mygrid.setWidget(3,0,myapp.createLabel('Type:');
var lbt=myapp.createListBox(false).setName('type');
lbt.setVisibleItemCount(1);
lbt.附加项(“铅”);
lbt.附加条款(“机会”);
lbt.附加项(“客户”);
setWidget(3,1,lbt);
mygrid.setWidget(4,0,myapp.createLabel('Kind:');
var lbk=myapp.createListBox(false).setName('kind');
lbk.setVisibleItemCount(1);
lbk.附加项(“预期值”);
lbk.附加项(“值”);
lbk.附加项(“计数”);
setWidget(4,1,lbk);
var panel=myapp.createVerticalPanel();
panel.add(mygrid);
var button=myapp.createButton('Submit');
var handler=myapp.createServerClickHandler(“进程管道”);
addCallbackElement(mygrid);
addClickHandler(handler);
面板。添加(按钮);
myapp.add(面板);
mydoc.show(myapp);
}
函数_u活动菜单_uu(){
var mydoc=SpreadsheetApp.getActiveSpreadsheet();
var myapp=UiApp.createApplication().setTitle(“活动”);
var mygrid=myapp.createGrid(7,2);
mygrid.setWidget(0,0,myapp.createLabel('Category:');
mygrid.setWidget(0,1,myapp.createTextBox().setName('category');
mygrid.setWidget(1,0,myapp.createLabel('Label:');
mygrid.setWidget(1,1,myapp.createTextBox().setName('label');
mygrid.setWidget(2,0,myapp.createLabel('User:');
mygrid.setWidget(2,1,myapp.createTextBox().setName('user'));
mygrid.setWidget(3,0,myapp.createLabel('Date:');
mygrid.setWidget(3,1,myapp.createDateBox().setId('date'));
setWidget(4,0,myapp.createLabel('Range:');
var lb=myapp.createListBox(false).setName('range');
lb.setVisibleItemCount(1);
lb.addItem(“周”);
lb.addItem(“月”);
lb.addItem(“年”);
setWidget(4,1,lb);
mygrid.setWidget(5,0,myapp.createLabel('Type:');
var lbt=myapp.createListBox(false).setName('type');
lbt.setVisibleItemCount(1);
lbt.附加项(“铅”);
lbt.附加条款(“机会”);
lbt.附加项(“客户”);
setWidget(5,1,lbt);
setWidget(6,0,myapp.createLabel('Kind:');
var lbk=myapp.createListBox(false).setName('kind');
lbk.setVisibleItemCount(1);
lbk.附加项(“预期值”);
lbk.附加项(“值”);
lbk.附加项(“计数”);
setWidget(6,1,lbk);
var panel=myapp.createVerticalPanel();
panel.add(mygrid);
var button=myapp.createButton('Submit');
var handler=myapp.createServerClickHandler(“进程活动”);
addCallbackElement(mygrid);
button.addClic