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
Authentication 使用HTTP请求登录到网站的Google应用程序脚本_Authentication_Google Apps Script_Httprequest - Fatal编程技术网

Authentication 使用HTTP请求登录到网站的Google应用程序脚本

Authentication 使用HTTP请求登录到网站的Google应用程序脚本,authentication,google-apps-script,httprequest,Authentication,Google Apps Script,Httprequest,我的谷歌硬盘上有一个电子表格,我想从另一个网站下载一个CSV,并将其放入我的电子表格中。问题是我必须先登录到网站,所以我需要使用一些HTTP请求来完成这项工作 我已经找到了网站和。如果这两个网站中的任何一个都有答案的话,那么我显然对他们的理解不够,无法理解。有人能帮我弄清楚吗?我觉得第二个网站是特别接近我需要的,但我不明白它在做什么 为了再次澄清,我想使用HTTP请求登录,然后使用不同的URL调用同一个网站,这是获取CSV文件的调用 在过去的一个月里,我已经做了很多这方面的工作,所以我应该能够帮

我的谷歌硬盘上有一个电子表格,我想从另一个网站下载一个CSV,并将其放入我的电子表格中。问题是我必须先登录到网站,所以我需要使用一些HTTP请求来完成这项工作

我已经找到了网站和。如果这两个网站中的任何一个都有答案的话,那么我显然对他们的理解不够,无法理解。有人能帮我弄清楚吗?我觉得第二个网站是特别接近我需要的,但我不明白它在做什么


为了再次澄清,我想使用HTTP请求登录,然后使用不同的URL调用同一个网站,这是获取CSV文件的调用

在过去的一个月里,我已经做了很多这方面的工作,所以我应该能够帮助您,我们正在尝试模拟浏览器的行为,因此首先您需要使用chrome的开发工具(或类似工具),并记下浏览器的具体操作,如发布的表单值、调用的url等。以下示例显示了要使用的常规技术:

第一步是登录网站并获取会话cookie:

  var payload =
   {
     "user_session[email]" : "username",
     "user_session[password]" : "password",
   };// The actual values of the post variables (like user_session[email]) depends on the site so u need to get it either from the html of the login page or using the developer tools I mentioned.
  var options =
   {
     "method" : "post",
     "payload" : payload,
     "followRedirects" : false
   };
  var login = UrlFetchApp.fetch("https://www.website.com/login" , options);
  var sessionDetails = login.getAllHeaders()['Set-Cookie'];
我们已登录该网站(为了确认只需登录sessionDetails并将其与chrome设置的Cookie相匹配)。下一步完全取决于网站,所以我将给你一个一般的例子

var downloadPayload = 
      {
        "__EVENTTARGET" : 'ctl00$ActionsPlaceHolder$exportDownloadLink1', 
      };// This is just an example it may or may not be needed, if needed u need to trace the values from the developer tools.
var downloadCsv = UrlFetchApp.fetch("https://www.website.com/", 
                                  {"headers" : {"Cookie" : sessionDetails},
                                   "method" : "post",
                                   "payload" : downloadPayload,
                                  });
Logger.log(downloadCsv.getContentText())
现在应该记录该文件,然后可以使用hte GAS内置函数解析csv,并将数据转储到电子表格中

需要注意的几点:

  • 我假设所有表单post值都是静态的,可以 硬编码,如果这不是真的,那么让我知道我会给你 一个可以从html中提取值的函数
  • 一些网站要求浏览器发送令牌值(该值将出现在html中)以及凭据。在这种情况下,您需要提取值,然后发布它

你好,Abnishek Ram,我面临着与OP几乎相同的问题,但我的用户名和密码不能被加密。应用程序流程如下:用户必须在html页面的输入字段中输入其
用户名
密码
,如果正确,则用户必须同时登录应用程序和第三方网站。你能帮我一下吗?@PavelValeriu我不确定我是否理解你的要求。请您详细解释一下,您登录应用程序是什么意思?你是如何在这里使用谷歌应用程序脚本的?。我建议你创建一个新帖子。我创建了一个新帖子,请在这里检查。有人想出了一种基于短信的两步身份验证登录的方法吗?