[英]Google-App-Script Conditional Loop is running but is not behaving as expected (java script)
現在,我只想為時間戳列位於最后截止日期和下一個截止日期之間的行生成谷歌幻燈片。 在示例中,它會在 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_deadline
和next_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.