首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >序列化continuation Apps脚本时出现意外异常

序列化continuation Apps脚本时出现意外异常
EN

Stack Overflow用户
提问于 2013-02-19 08:17:32
回答 2查看 2.2K关注 0票数 2

我最近开始在尝试调试时在电子表格Google Apps脚本上收到错误“序列化延续时出现意外异常”。这个错误似乎是在我创建了一个到Google CloudSQL api的连接之后开始的。即使在注释掉jdbc对象构造函数之后,仍然会出现此错误。似乎其他人也有这个问题,需要Google Tech来解决这个问题。

我已经搜索了所有的讨论板,寻找这个问题的解决方案,但没有成功。有没有可能有谷歌的技术人员可以帮我看一看引擎盖下的情况?如果我可以确定是哪一行实际触发了这个错误,我会发布代码。

编辑:

好了,我想我已经发现了错误发生的地方。看起来像是

代码语言:javascript
复制
var response = UrlFetchApp.fetch(url + nextPage,oauth_options);

在while循环中。下面是完整的函数代码。

代码语言:javascript
复制
function retrieveEvents(endTimeMinimum, updatedAfter, orderBy){      
//var url = 'https://www.googleapis.com/calendar/v3/calendars/' + source_cal + '/events?key=' + api_key + "&futureevents=true&orderBy=updated&sortOrder=descending&updatedMin=" + last_sync_date_formated;
//var url = 'https://www.googleapis.com/calendar/v3/calendars/' + source_cal + '/events?key=' + api_key + "&orderBy=updated&sortOrder=descending&updatedMin=" + last_sync_date_formated;

   var url = 'https://www.googleapis.com/calendar/v3/calendars/' + source_cal + '/events?key=' + api_key + "&singleEvents=true";

   if ((orderBy != null) && (orderBy != "")){
     url += "&orderBy=" + orderBy;
   }
   else url += "&orderBy=updated";

   if ((updatedAfter != null) && (updatedAfter != "")){
     url += "&updatedMin=" + updatedAfter;
   }
   else url += "&updatedMin=" + last_sync_dateTime;


   //if no endTimeMinimum is specified, the current time will be used.
   if (endTimeMinimum ==  null || endTimeMinimum == ""){
     endTimeMinimum = date_rfc339("Today");
   }

   url += "&timeMin=" + endTimeMinimum;

   Logger.log("Request URL:" + url);

   var largeString = "";
   var events = new Array();
   var nextPage = "";
   var jsonObj

   while(true){
     var response = UrlFetchApp.fetch(url + nextPage,oauth_options);
     largeString = response.getContentText();

     if ((largeString != null) && (largeString != "")) {
       jsonObj = JSON.parse(largeString);  
     }
     if ('items' in jsonObj) events = events.concat(jsonObj.items);
     if ('nextPageToken' in jsonObj){
       nextPage = "&pageToken=" + jsonObj.nextPageToken;
       continue;
     }
     break;
   }

   if (events.length == 0)return null;
     return events;
 }
EN

回答 2

Stack Overflow用户

发布于 2013-02-25 22:26:32

好的,所以我能够通过删除函数内部的try catch块来解决这个问题,该函数是从main函数中的try catch块内部调用的。当从调试器运行程序时,我不再看到“序列化继续时出现意外异常”。

我希望我有一个更可靠的答案是什么导致了这个错误以及如何纠正它。

票数 3
EN

Stack Overflow用户

发布于 2013-02-19 19:16:40

根据我的经验,这不是由该行(或任何其他行)具体导致的错误,而是因为错误是在循环中触发的。我还没有确定确切的可复制原因,但GAS似乎丢失了循环指针某些错误。

我最好的建议是,您怀疑会在while循环中导致错误的任何行都使用try-catch来包装,它会将错误记录到记录器中并继续执行。然后,循环指针不会丢失,并将按预期进行调试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14947708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档