小编HDC*_*rus的帖子

在 Google Script 中尝试/捕获 HTTP 响应的最佳方法

我还是 JavaScript 和 Google 应用程序脚本的新手,这是我第一次尝试使用“Try/Catch”语句。

我正在运行一个连接到页面的脚本。它大部分时间都可以正常连接,但有时它不会响应并抛出 http 错误(或者,响应将为空)。如果我收到错误代码,我想尝试/捕获此响应以使其第二次运行,但我不能 100% 确定我理解语法,因为无论我如何格式化它,它要么永远不会抛出异常,或总是抛出它。

这是我一直在试验的一些示例代码:

function myFunction() {
  var response =  UrlFetchApp.fetch("google.com"); 
  Logger.log('Response Code: ' + response.getResponseCode());

try {if(response.getResponseCode() === 200);
} catch (err) {
    throw 'Page connected';
}
}
Run Code Online (Sandbox Code Playgroud)

如果我能让这个工作,我相信我可以弄清楚其余的。但是,即使日志显示我收到了 200 的 HTTP 响应,它也永远不会抛出错误“页面已连接”。

如果有人可以指导我:

1)这是实现我想要的正确方法,还是尝试/捕获其他东西?2)正确的语法。

我会很感激。

javascript try-catch google-apps-script

6
推荐指数
2
解决办法
1万
查看次数

在页面上找到任意位置的插入位置

我是兼职新开发人员,致力于Chrome扩展程序,可用作内部CR工具.

概念很简单,在键盘快捷键上,扩展名获取插入符号旁边的单词,检查它是否匹配模式,如果匹配为"true",则使用预设响应替换该单词.

为此,我主要使用此答案的修改版本.

我已经遇到了障碍,因为它适用于主动元素,但它似乎不适用于Chrome中的"撰写"窗口,或者与其他服务一致(Salesforce似乎也不喜欢它,例如).我有点认为这可能是iFrames的一个问题,所以我修改了一下并修改了这段代码的安静:

function getActiveElement(document){
    document = document || window.document;
    if( document.body === document.activeElement || document.activeElement.tagName == 'IFRAME' ){// Check if the active element is in the main web or iframe
        var iframes = document.getElementsByTagName('iframe');// Get iframes
        for(var i = 0; i<iframes.length; i++ ){
            var focused = getActiveElement( iframes[i].contentWindow.document );// Recall
            if( focused !== false ){
                return focused; // The focused
             }
         }
     }
     else return document.activeElement;
};
Run Code Online (Sandbox Code Playgroud)

(我最初从另一个SO帖子中得到了我再也找不到了).好像我运气不好,好像没有骰子.

是否有一种简单的方法可以在每个页面上始终使用活动插入符获取活动元素,即使对于Gmail撰写窗口和类似服务,或者我将不得不为我的代码可以增加的服务列表编写自定义代码拿取插入符号?

我的完整代码就在这里.这很粗糙,而我只是想让它发挥作用,所以我理解它的草率部分需要整理:

 function AlertPrevWord() {
        //var text = …
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome-extension

5
推荐指数
1
解决办法
592
查看次数

为什么不切片工作?

我是Javascript的新手,我正在尝试编写chrome扩展.

对于扩展,如果用户输入一个字符串,我希望切掉前两个字符.

目前,我有:

if (text.charAt(0) == '/') {
    text.slice(0,2);
    chrome.tabs.create({
        url: "PrivateURL" + text
    });
} 
Run Code Online (Sandbox Code Playgroud)

但它没有用,没有任何东西被切掉.我觉得我的语法有问题,因为我还在学习.任何帮助表示赞赏.

javascript

2
推荐指数
2
解决办法
6321
查看次数

修改现有的表单值-GetChoices()无法正常工作

为什么“ .getChoices() ”不适用于现有列表项?

我有以下代码,通过它的ID获取表单中的项,并且我打算更新表单项的值。但是,使用.getChoices()方法时,它将失败,并显示错误' TypeError:在对象Item中找不到函数getChoices。'

我获取该项目是一个列表项的要求,并在创建一个列表项,然后取出,它正常工作,如列出的示例代码在这里

我的代码如下:

function getWeekNumberFormItem() {
   var form = FormApp.getActiveForm();
   var item = form.getItemById(12345);//redacted for privacy, but the ID in here is correct. 
   var title = item.getTitle();
   var itemType = item.getType();
   Logger.log('Item Type: ' + itemType);
   Logger.log('Item Title: ' + title);
   var choices = item.getChoices();
   Logger.log(choices);
}
Run Code Online (Sandbox Code Playgroud)

并证明它是一个列表项,我的日志输出是:

在此处输入图片说明

我使用不正确吗?还是只能在Apps脚本创建项目时使用?相反,我将如何在此列表项中获得选择并使用新选项更新它们?我看到其他用户设法做到了这一点,所以我相信这是可能的。

google-apps-script google-forms

2
推荐指数
1
解决办法
1034
查看次数

为什么 .setUTCFullYear() 和 .setUTCMonth() 返回不同的结果

在此将字符串转换为日期的示例代码中:

function stringToDate(){
  var edate = "2015-06-01";
  Logger.log(edate);
  var input = edate.split('-'); 
  var date = new Date();
  date.setUTCFullYear(input[0],input[1] - 1,input[2]);
  Logger.log(date);
}
Run Code Online (Sandbox Code Playgroud)

记录日期返回“Mon Jun 01 20:07:45 GMT+01:00 2015”,这是正确的,因为月份 '06' - 1 = 5 对应于六月的月份。

但是,这个几乎相同的功能:

function stringToDate2(){
  var edate = "2015-06-01";
  Logger.log(edate);
  var input = edate.split('-');  
  var date = new Date(); 
  date.setUTCFullYear(input[0]);
  date.setUTCMonth(input[1] - 1);
  date.setUTCDate(input[2]);
  Logger.log(date);
}
Run Code Online (Sandbox Code Playgroud)

返回“2015 年 7 月 1 日星期三 20:10:04 GMT+01:00”。其他一些值返回同样糟糕的结果。为什么“setUTCMonth”和“setUTCFullYear”得到不同的结果?

javascript google-apps-script

2
推荐指数
1
解决办法
310
查看次数