Cookies 使用UrlFetchApp在google应用程序脚本中设置多个cookie

Cookies 使用UrlFetchApp在google应用程序脚本中设置多个cookie,cookies,google-apps-script,google-sheets,urlfetch,Cookies,Google Apps Script,Google Sheets,Urlfetch,我使用以下脚本访问一个需要用户登录的网页。该脚本一直工作到我检索登录cookies的地步,我需要以下代码最后一部分中有关使用cookies的帮助 function login(strUsername, strPassword) { //request Page var loginPage = UrlFetchApp.fetch("https://login.url.org/"); //strip out "authState" value from response var

我使用以下脚本访问一个需要用户登录的网页。该脚本一直工作到我检索登录cookies的地步,我需要以下代码最后一部分中有关使用cookies的帮助

function login(strUsername, strPassword) {

  //request Page
  var loginPage = UrlFetchApp.fetch("https://login.url.org/");

  //strip out "authState" value from response
  var sessionDetails = loginPage.getContentText()
  var searchString = sessionDetails.indexOf('"authState":"');
  var newStringRight =  sessionDetails.substring(searchString+13, searchString+6000);
  var authState =  newStringRight.substring(0, newStringRight.indexOf('"'));

  //Logger.log(authState);

//set payload 
  var payload =
   {"authState":authState,
    "username":strUsername,
    "password":strPassword
   };


  var options =
   {
     "method" : "post",
     "payload" :  JSON.stringify(payload),
     "followRedirects" : false,
      muteHttpExceptions: true,
      "contentType": "application/json"
   };

    //Logger.log(options);
   var loginResponse = UrlFetchApp.fetch("https://login.url.com/api/authenticate/credentials", options);


  var loginHtml = loginResponse.getContentText();
  Logger.log(loginHtml); 
  // Log has the following response

  //{"output":{"method":"SUCCESS","cookies":{"ObSSOCookie":"xxx","ChurchSSO":"yyy"}}}

  if (loginHtml.indexOf("SUCCESS")>0){
     Browser.msgBox('Pass', 'Successfully loged in.', Browser.Buttons.OK); 

     //strip out cookies
     searchStringStart = loginHtml.indexOf('{"ObSSOCookie":"');
     searchStringEnd = loginHtml.indexOf('"}}');
     var Cookie =  loginHtml.substring(searchStringStart, searchStringEnd+2);  
     Logger.log(Cookie); 
      /*
       Logger.log(cookie) returns
       {"ObSSOCookie":"xxxx","ChurchSSO":"yyyy"}
     */

////////////////////////////Works up to here/////////////////////////////////////////    
     var options =
         {
       "headers" : {"cookies" : Cookie},
        muteHttpExceptions: true,
        "contentType": "application/json"
     };

    var adminpage= UrlFetchApp.fetch("https://url.com/admin",options ); 
    Logger.log(adminpage);
   /*
             <h1>Access Denied</h1>
            <p>You are not authorized to access this page.</p>
            <p><a href="javascript:location.reload()">Retry</a> 
   */


   }else{
     Browser.msgBox('Fail', 'Sign in failed. Please try again.', Browser.Buttons.OK);  
   }

}
函数登录(strUsername、strPassword){
//请求页
var loginPage=UrlFetchApp.fetch(“https://login.url.org/");
//从响应中去掉“authState”值
var sessionDetails=loginPage.getContentText()
var searchString=sessionDetails.indexOf('authState:');
var newStringRight=sessionDetails.substring(searchString+13,searchString+6000);
var authState=newStringRight.substring(0,newStringRight.indexOf(“”);
//Logger.log(authState);
//设定有效载荷
var有效载荷=
{“authState”:authState,
“用户名”:strUsername,
“密码”:strPassword
};
var期权=
{
“方法”:“发布”,
“有效载荷”:JSON.stringify(有效载荷),
“followRedirects”:false,
muteHttpExceptions:true,
“contentType”:“应用程序/json”
};
//Logger.log(选项);
var loginResponse=UrlFetchApp.fetch(“https://login.url.com/api/authenticate/credentials“,选项);
var loginHtml=loginResponse.getContentText();
Logger.log(loginHtml);
//日志有以下响应
//{“输出”:{“方法”:“成功”,“cookies”:{“ObSSOCookie”:“xxx”,“churchso”:“yyy”}}
如果(loginHtml.indexOf(“成功”)>0){
Browser.msgBox('Pass','Successfully login',Browser.Buttons.OK);
//去掉饼干
searchStringStart=loginHtml.indexOf(“{”ObSSOCookie:“);
searchStringEnd=loginHtml.indexOf(“}}”);
var Cookie=loginHtml.substring(searchStringStart,searchStringEnd+2);
Logger.log(Cookie);
/*
Logger.log(cookie)返回
{“ObSSOCookie”:“xxxx”,“churchso”:“yyy”}
*/
////////////////////////////到这里为止//////////////////
var期权=
{
“标头”:{“cookies”:Cookie},
muteHttpExceptions:true,
“contentType”:“应用程序/json”
};
var adminpage=UrlFetchApp.fetch(“https://url.com/admin“,选项);
Logger.log(adminpage);
/*
拒绝访问
您无权访问此页面

*/ }否则{ Browser.msgBox('Fail','登录失败。请重试'),Browser.Buttons.OK); } }

我想这可能是因为我试图使用多个cookie
{“ObSSOCookie”:“xxxx”、“churchso”:“yyy”}
不确定如何适当地将它们传递到新的页面调用中。任何帮助都很好

Cookies应该在单个
Cookie
标题中发送,标题之间用
分隔(分号和空格):

片段: 参考:

这是否回答了您的问题?
Cookie: name1=value1; name2=value2; 
var options =
     {
       "headers" : {"Cookie" : "ObSSOCookie=xxxx; ChurchSSO=yyyy"}},
     };