簡體   English   中英

簡單 Apps 腳本執行超時

[英]Simple Apps Script timing out on execution

我只是 C+ 的初級水平,我正在嘗試執行我認為是此電子表格的 Apps 腳本中的一個簡單腳本: https://docs.google.com/spreadsheets/d/1lu0_B1OdjU6Y5KF4zomCpQNiGCGklVoZDF8rQ8HQBhQ/edit?usp=sharing The執行超時,它沒有給我太多關於原因的信息,但它必須與我更改的模板部分有關。 即任務 3 中的 for 循環。也許我也用這種方式連接? 我不熟悉 Java,可能遺漏了一些非常明顯的東西。 我也不熟悉它應該如何設置,所以請善待。

function routineActivator() {
  /** 
  Task 1) Open the Event  Calendar.
  **/
  
  var spreadsheet = SpreadsheetApp.getActiveSheet();
  var calendarId = 'myEmail';
  var eventCal = CalendarApp.getCalendarById(calendarId);
  
 /** 
  Task 2) Pull each shift information into the code, in a form that the code can understand.
 **/
 
  var routine = spreadsheet.getRange('A4:D74').getValues();
  

  /**
  Task 3) Do the work!
 **/
  
  for (x=0; x<routine.length; x++) {
       
       
       var task = routine[x];
       var des = task[3]
       if(des=1){
         var label = task[2];
         var startTime = task[0] + task[1];
         while (des != 2){
           var endTime = task[0] + task[1];
           task++;
          }
         eventCal.createEvent(label, startTime, endTime);
        }       
      }
     
       
       /**
       Task 4) Make it easy to use.
       **/
       
       function onOpen() {
          var ui = SpreadsheetApp.getUi();
          ui.createMenu('Sync to Calendar')
               .addItem('Schedule tasks now', 'routineActivator')
       }
}

我試圖運行它,但它循環並超時。

問題是以下將永遠循環並且永遠不會退出:

  if (des = 1) {
    while (des != 2) {
    }
  }

des將始終為1 ,因為您使用的是賦值運算符=而不是比較運算符===

但是,更改運算符不足以解決問題,因為當des1時,它不是2 ,並且while循環永遠不會退出。 你需要在while循環中修改des

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM