UrlFetchApp.fetch是否会中止脚本?

丙氨酸

我创建一个包含3个工作表的电子表格,“链接”,“有效链接”和“无效链接”,然后使用以下代码检查“链接”表中的每一行,如下所示:

function myFunction() {
  var rows = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Links").getDataRange().getValues();
  
  rows.forEach(function(row, index) 
  {
    if (index !== 0) 
    { 
      var url = row[1];
      var page = UrlFetchApp.fetch(url).getContentText();
      var number = page.match("sample.com");
      
      if (!number)
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Valid Links").appendRow(url);
      else
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Invalid Links").appendRow(url);
    }
  });
}

但是,当我调试到UrlFetchApp.fetch(url)时,脚本突然中止。没有显示错误或异常。为什么?

我在Google Script Community上问了这个问题,但没有人回答。所以我不得不在这里问。我不知道如何在Google Script社区中获取问题的特定URL,因此我必须复制并粘贴问题。对于那个很抱歉。

更新资料

在Tanaike的帮助下,我修复了我的错误:

  1. 我认为row [1]引用了A列,但实际上它引用了B列,这是一个未定义的值,因此会引起bug。

  2. !number应该更改为number,好像(number)表示匹配,因此结果是有效的链接。

Tanaike

我相信您的目标如下。

  • 您想通过使用来检查URL,从而将值添加到Valid Links和工作Invalid Links表中UrlFetchApp.fetch
  • 检查的URL放在工作表的“ B”列中Links

修改要点:

  • 在这种情况下,如何将muteHttpExceptions用作选项UrlFetchApp.fetch这样,即使请求失败,也可以检索响应值。
    • 默认值muteHttpExceptionsfalse在这种情况下,当请求发生错误时,脚本将停止。看来这是当前的规范。但是,当muteHttpExceptionstrue时,脚本甚至没有当请求发生错误而停止。
  • 在您的脚本中,appendRow(url)使用且var url = row[1];是“ B”列中的值。在这种情况下,url必须为[url]
  • 在的情况下var number = page.match("sample.com");,当sample.com包含在中时pageurl放在Invalid Links表格中。sample.com不包含在时pageurl放在Valid Links表中。我不确定这是否是您期望的结果。但是请注意这一点。
  • 我认为,var ss = SpreadsheetApp.getActiveSpreadsheet();使用时,加工成本将可以降低一些。

当以上几点反映到您的脚本时,它将变为以下内容。

修改后的脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  // Added
  var rows = ss.getSheetByName("Links").getDataRange().getValues();  // Added
  rows.forEach(function(row, index) {
    if (index !== 0) {
      var url = row[1];
      var page = UrlFetchApp.fetch(url, {muteHttpExceptions: true}).getContentText();  // Modified
      var number = page.match("sample.com");
      if (!number) {
        ss.getSheetByName("Valid Links").appendRow([url]);  // Added
      } else {
        ss.getSheetByName("Invalid Links").appendRow([url]);  // Added
      }
    }
  });
}

注意:

  • fetchAll被使用时,工艺成本可能能够减少更多。但是我不确定URL的数量。所以我像上面那样修改了脚本,没有使用fetchAll方法。

参考文献:

添加:

关于以下新问题

另一个问题是,当url为wisesoft.co.uk时,我收到错误SSL错误wisesoft.co.uk(第10行,文件“代码”),脚本也中止了。我使用Chrome浏览器,发现https有错误,但是可以通过http版本访问该网站,如何忽略此类错误并继续获取内容?

在这种情况下,如何使用try...catch以下内容?

修改后的脚本:

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var rows = ss.getSheetByName("Links").getDataRange().getValues();
  rows.forEach(function(row, index) {
    if (index !== 0) {
      var url = row[1];
      try {
        var page = UrlFetchApp.fetch(url, {muteHttpExceptions: true}).getContentText();
        var number = page.match("sample.com");
        if (!number) {
          ss.getSheetByName("Valid Links").appendRow([url]);
        } else {
          ss.getSheetByName("Invalid Links").appendRow([url]);
        }
      } catch(e) {
        ss.getSheetByName("Invalid Links").appendRow([url]);
      }
    }
  });
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Google App脚本-UrlFetchApp.Fetch无法发布

来自分类Dev

处理UrlFetchApp.fetch()中的404错误

来自分类Dev

Google Apps脚本:UrlFetchApp发布文件

来自分类Dev

如何在指定时间后取消UrlFetchApp.fetch?

来自分类Dev

如何正确使用UrlFetchApp.fetch的Google URL Shortner API?

来自分类Dev

为什么我不能让UrlFetchApp.fetch使用doGet()?

来自分类Dev

GoogleSpreadsheets UrlFetchApp.fetch在获取数据时遇到问题

来自分类Dev

强制 Google Script 对来自 UrlFetchApp fetch 的请求使用相同的 IP

来自分类Dev

Gmail 插件中 UrlFetchApp.fetch() 的 HTTP 失败回调

来自分类Dev

UrlFetchApp.fetch() 的深入调试?返回 - '地址不可用'

来自分类Dev

URL存在时,Google Apps脚本UrlFetchApp返回404

来自分类Dev

无法在Google Apps脚本中解析来自UrlFetchApp的数据

来自分类Dev

使用 UrlFetchApp 和 DocumentApp 时 Google App 脚本授权失败

来自分类Dev

如何使用UrlFetchApp.fetch(url,params)在Google Apps脚本中正确查询Facebook Graph API?

来自分类Dev

Google Apps脚本UrlFetchApp.fetch将整数转换为浮点数吗?

来自分类Dev

Google Appscript / UrlFetchApp.fetchAll()函数是否可以同步运行?

来自分类Dev

在Google Apps脚本中将UrlFetchApp与触发器配合使用是否有限制

来自分类Dev

使用基本身份验证的Google Apps脚本中的UrlFetchApp.fetch出现意外错误

来自分类Dev

在Google Apps脚本中将UrlFetchApp与触发器一起使用是否有限制

来自分类Dev

UrlFetchApp.fetch()在google.com上的内容不完整

来自分类Dev

如何获取通过UrlFetchApp.fetch(photoLink)获得的jpeg图像的大小(以像素为单位)?

来自分类Dev

Google Spreadsheets上的UrlFetchApp.fetch无法连接AWS后端Web服务

来自分类Dev

UrlFetchApp.fetch 返回错误的请求,但服务调用在浏览器中有效

来自分类Dev

有没有办法将 URLFetchApp.fetch 从 gs 端传递到 javascript 端

来自分类Dev

UrlFetchApp在Google Apps脚本中上传文件multipart / form-data

来自分类Dev

为什么Google Apps脚本的UrlFetchApp返回HTML而不是csv文件(请求Facebook API)?

来自分类Dev

您可以将UrlFetchApp转换为Apps脚本中的Promise吗?

来自分类Dev

如何在Google Apps脚本中使用UrlFetchApp更新Github存储库?

来自分类Dev

UrlFetchApp在Google Apps脚本中上传文件multipart / form-data

Related 相关文章

  1. 1

    Google App脚本-UrlFetchApp.Fetch无法发布

  2. 2

    处理UrlFetchApp.fetch()中的404错误

  3. 3

    Google Apps脚本:UrlFetchApp发布文件

  4. 4

    如何在指定时间后取消UrlFetchApp.fetch?

  5. 5

    如何正确使用UrlFetchApp.fetch的Google URL Shortner API?

  6. 6

    为什么我不能让UrlFetchApp.fetch使用doGet()?

  7. 7

    GoogleSpreadsheets UrlFetchApp.fetch在获取数据时遇到问题

  8. 8

    强制 Google Script 对来自 UrlFetchApp fetch 的请求使用相同的 IP

  9. 9

    Gmail 插件中 UrlFetchApp.fetch() 的 HTTP 失败回调

  10. 10

    UrlFetchApp.fetch() 的深入调试?返回 - '地址不可用'

  11. 11

    URL存在时,Google Apps脚本UrlFetchApp返回404

  12. 12

    无法在Google Apps脚本中解析来自UrlFetchApp的数据

  13. 13

    使用 UrlFetchApp 和 DocumentApp 时 Google App 脚本授权失败

  14. 14

    如何使用UrlFetchApp.fetch(url,params)在Google Apps脚本中正确查询Facebook Graph API?

  15. 15

    Google Apps脚本UrlFetchApp.fetch将整数转换为浮点数吗?

  16. 16

    Google Appscript / UrlFetchApp.fetchAll()函数是否可以同步运行?

  17. 17

    在Google Apps脚本中将UrlFetchApp与触发器配合使用是否有限制

  18. 18

    使用基本身份验证的Google Apps脚本中的UrlFetchApp.fetch出现意外错误

  19. 19

    在Google Apps脚本中将UrlFetchApp与触发器一起使用是否有限制

  20. 20

    UrlFetchApp.fetch()在google.com上的内容不完整

  21. 21

    如何获取通过UrlFetchApp.fetch(photoLink)获得的jpeg图像的大小(以像素为单位)?

  22. 22

    Google Spreadsheets上的UrlFetchApp.fetch无法连接AWS后端Web服务

  23. 23

    UrlFetchApp.fetch 返回错误的请求,但服务调用在浏览器中有效

  24. 24

    有没有办法将 URLFetchApp.fetch 从 gs 端传递到 javascript 端

  25. 25

    UrlFetchApp在Google Apps脚本中上传文件multipart / form-data

  26. 26

    为什么Google Apps脚本的UrlFetchApp返回HTML而不是csv文件(请求Facebook API)?

  27. 27

    您可以将UrlFetchApp转换为Apps脚本中的Promise吗?

  28. 28

    如何在Google Apps脚本中使用UrlFetchApp更新Github存储库?

  29. 29

    UrlFetchApp在Google Apps脚本中上传文件multipart / form-data

热门标签

归档