簡體   English   中英

Google-App-Script 條件循環正在運行但未按預期運行(java 腳本)

[英]Google-App-Script Conditional Loop is running but is not behaving as expected (java script)

我正在從 Google 表格中提取數據,如下所示: 在此處輸入圖片說明

現在,我只想為時間戳列位於最后截止日期和下一個截止日期之間的行生成谷歌幻燈片。 在示例中,它會在 A2:B2 中提取記錄,因為時間戳在這兩個日期之間。 我將此邏輯添加到我的腳本中,但是當我運行它時,它不會生成幻燈片,即它確實按預期運行,但我也沒有收到錯誤消息。 會是什么呢?

function generateSlides_master() 
{
  
  var dataSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/1hhf"; 
  var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl);
  var deck = SlidesApp.getActivePresentation();
  var sheet = ss.getSheetByName('Form_Responses');
  var values = sheet.getRange('A2:N20000').getValues();
  var slides = deck.getSlides();
  var templateSlide = slides[1];
  var last_deadline = sheet.getRange('P4:P4').getValues();
  var next_deadline = sheet.getRange('P2:P2').getValues();
  
 
  values.forEach(function(page){ //for each row in google sheets
  if(page[0]){
    if (page[0] > last_deadline && Work_Week<= next_deadline ){ //THIS IS NOT WORKING AS EXPECTED!
  
   var Work_Week = Utilities.formatDate(page[0], "GMT", "MM/dd/yyyy");
   var Email = page[1];
 
 
   templateSlide.duplicate(); //duplicate the template page
   slides = deck.getSlides(); //update the slides array for indexes and length
   newSlide = slides[2]; // declare the new page to update
    
    
   var shapes = (newSlide.getShapes());
     shapes.forEach(function(shape){
       shape.getText().replaceAllText('{{Email}}',Email);
      
    }); 
   presLength = slides.length; 
   newSlide.move(presLength); 
  }
  }// end our conditional statement
  }); //close our loop of values

//Remove the template slide
//templateSlide.remove();
  
}

您已將last_deadlinenext_deadline定義為二維數組,因此您的 if 語句實際上並未檢查日期。 使用getValue()來獲取各個值。

var last_deadline = sheet.getRange('P4').getValue();
var next_deadline = sheet.getRange('P2').getValue();

我還認為您的意思是page[0] <= next_deadline ,而不是與Work_Week進行比較。

這是一個經過大量編輯的示例,它只會記錄時間戳而不是創建幻燈片。

function generateSlides_master() {
  var dataSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/1hhf"; 
  var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl);
  var sheet = ss.getSheetByName('Form_Responses');
  var values = sheet.getRange('A2:N20000').getValues();
  var last_deadline = sheet.getRange('P4').getValue();
  var next_deadline = sheet.getRange('P2').getValue();

  values.forEach(function(page) { //for each row in google sheets
    var timestamp = page[0];
    if (timestamp) {
      if (timestamp > last_deadline && timestamp<= next_deadline) {
        Logger.log('Create slide ' + timestamp);
      }
    }
  }); 
}

暫無
暫無

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

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