Google apps script 从Google应用程序脚本向Watson Discovery发布JSON对象

Google apps script 从Google应用程序脚本向Watson Discovery发布JSON对象,google-apps-script,urlfetch,watson-discovery,Google Apps Script,Urlfetch,Watson Discovery,我正试图通过谷歌脚本将我的谷歌日历和每天作为文档发布给watson discovery。我的代码看起来像这样 var headers={ "User-Agent": "CreateCalendarListJson", "Authorization": "Basic " + Utilities.base64Encode( authdata.username+":"+authdata.password) }; /

我正试图通过谷歌脚本将我的谷歌日历和每天作为文档发布给watson discovery。我的代码看起来像这样

    var headers={
            "User-Agent": "CreateCalendarListJson",
            "Authorization": "Basic " + Utilities.base64Encode( authdata.username+":"+authdata.password)
        };
        //headers.contentType="application/json";
        var parms={"headers":headers};
        url=newurl+"/v1/environments/"+discoveryData.environmentID+
          "/collections/"+discoveryData.collection_ID+"/documents/?version=2017-09-01";
        parms.method="POST";
        parms.file={
          'value':JSON.stringify(jsonEvent),
          'options':{
            'filename':jsonEvent.filename,
            'contentType':"application/json"
          }
        }
        console.info('discovery add document %s',JSON.stringify(parms));
        response=UrlFetchApp.fetch(url,parms);
但是,这会得到一个错误415不支持的媒体类型。尽管application/json是受支持的类型,我已经相应地设置了contentType。有什么建议吗

运行UrlFetchApp.Fetch时,parms变量如下所示:

{"headers":
     {"User-Agent":"CreateCalendarListJson",
      "Authorization":"Basic ZTIyNTEwM............................tHcg=="},
      "method":"POST",
      "file":{"value":"{\"title\":\"Events 10/13/2017\",\"filename\":\"Events_10_13_2017\",\"text\":[{\"date\":\"10/13/2017\",\"summary\":\"assignment 1\"}]}",
      "options":{"filename":"Events_10_13_2017",
       "contentType":"application/json"}}}"   

问题是到Watson Discovery的文档必须作为多部分/表单数据类型传递。以下函数将编写一个json文本(存储在jsonEvent.text中)作为发现文档。将api端点放在“newurl”中,并将发现用户名和密码存储在“authdata”(json对象)中,将发现文档的文件名放在“filename”中

function sendtodiscovery(url, jsonEvent, filename,authdata){
   var headers={
        "User-Agent": "CreateCalendarListJson",
        "Authorization": "Basic " + Utilities.base64Encode( authdata.username+":"+authdata.password)
    };
    var parms={"headers":headers};
    var boundary="xxxxxxxx";  
    parms.method="POST";
    var data="--"+boundary+"\r\n"
    data += "Content-Disposition: form-data; name=\"file\"; filename=\""+filename+"\"\r\n";
    data += "Content-Type: application/json\r\n\r\n";
    console.info("data=%s",data);
    console.info("event=%s",JSON.stringify(jsonEvent));
    var payload=Utilities.newBlob(data).getBytes()
    .concat(Utilities.newBlob(JSON.stringify(jsonEvent)).getBytes())
    .concat(Utilities.newBlob("\r\n--"+boundary+"--\r\n\r\n").getBytes());

    parms.contentType="multipart/form-data; boundary="+boundary;
    parms.payload=payload;
    //parms.muteHttpExceptions=true;
    console.info('discovery add document %s',JSON.stringify(parms));
    return UrlFetchApp.fetch(url,parms);
 }