2016-12-05 62 views
0

Situacion:

我有以下代碼,打開了該功能必須檢查每5分鐘的柱(H),並且如果電池值是「CALL」顯示對話框。
現在,如果我從谷歌腳本運行功能點擊播放功能運行得很好......但是當我設置這個功能運行基地時間每5分鐘沒有運行。
谷歌腳本:如何運行帶觸發器的ShowModalDialog函數?

function alertDialog() { 
    var s = SpreadsheetApp.openById('URL ID'); 
    var Support = s.getSheetByName("Shift").activate(); 
    var lastrow = Support.getLastRow(); 

    var data1 = Support.getRange(3, 1, lastrow).getValues(); // Ticket# Column (A) 
    var data3 = Support.getRange(3, 8, lastrow).getValues(); // Status Call Column (H) 

    ///////////////////// CALL ////////////////////////// 

    var report = " " 
    var callTable =""; 
    for(var i in data3){ 
    if(data3[i]=='Call') { callTable += "<tr><td style='color:blue;padding:5px'>" +data1[i]+"</a>" 
             + "</td><td style='background-color:red;color:white;padding:5px'; align='center'><b>" + data3[i] + "</b>" 
             + "</td></tr>"; 

    report ="<b>Pendig Call:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>Ticket#</th><th style='background-color:black;color:white'>Status Call</th></tr>"+callTable+"</table><br><audio autoplay><source src='http://soundbible.com/mp3/sms-alert-1-daniel_simon.mp3' type='audio/mpeg'></audio>"; 



var htmlOutput = HtmlService 
    .createHtmlOutput(report) 
    .setWidth(400) 
    .setHeight(450); 
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Ticket Pending Call'); 
    } 

    else return; // If not true 
    } 
} 


我會appreaciate你的幫助。

回答

1

您可以檢查執行成績單,我得到的錯誤:

執行失敗:無法從該上下文調用用SpreadsheetApp.getUi()。

所以看起來你不能說在showModalDialog基於時間觸發(雖然我不知道你爲什麼會想)

編輯

從您的意見,使用try/catch塊

function alertDialog() { 
var s = SpreadsheetApp.openById('URL ID'); 
    var Support = s.getSheetByName("Shift") 
    var lastrow = Support.getLastRow(); 

    var data1 = Support.getRange(3, 1, lastrow).getValues(); // Ticket# Column (A) 
    var data3 = Support.getRange(3, 8, lastrow).getValues(); // Status Call Column (H) 

    ///////////////////// CALL ////////////////////////// 

    var report = " " 
    var callTable =""; 
    Logger.log('ran'); 

    try{ 
    for(var i in data3){ 
    if(data3[i]=='Call') { callTable += "<tr><td style='color:blue;padding:5px'>" +data1[i]+"</a>" 
             + "</td><td style='background-color:red;color:white;padding:5px'; align='center'><b>" + data3[i] + "</b>" 
             + "</td></tr>"; 

    report ="<b>Pendig Call:</b><br><br><table style='border-collapse:collapse;'border = 1 cellpadding = 5; align='center'><tr><th style='background-color:black;color:white'>Ticket#</th><th style='background-color:black;color:white'>Status Call</th></tr>"+callTable+"</table><br><audio autoplay><source src='http://soundbible.com/mp3/sms-alert-1-daniel_simon.mp3' type='audio/mpeg'></audio>"; 


var htmlOutput = HtmlService 
    .createHtmlOutput(report) 
    .setWidth(400) 
    .setHeight(450); 
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Ticket Pending Call'); 

    } 

    else return; // If not true 
    } 
     } catch (e) { Logger.log(e)} 

} 
+0

當您嘗試使用觸發功能運行此功能時出現此錯誤,對嗎?因爲如果我從腳本控制檯運行funtion運行沒有任何問題... 如果我從菜單調用funtion,相同的功能工作...但從觸發器不起作用。爲什麼我需要那個?列H有SLA的功能,當票證需要更新時,單元格變爲呼叫...但我需要一種方式來通知用戶需要更新的彈出窗口...因爲系統只允許每天50封電子郵件我可以通過電子郵件提醒進行設置。 –

+0

另外其他人使用側邊欄提供解決方案,但側欄需要始終打開以檢查單元格的問題... 即使瀏覽器的活動選項卡不是電子表格,我也試圖使聲音聽到,也就是說,如果我正在看另一個頁面,直到我站在帶有該表格的皮瓣上時,聲音纔會出現。 –

+0

即使沒有使用電子表格,基於時間的觸發器也會運行,所以在沒有用戶的情況下打開UI並沒有什麼意義。也許你可以澄清? – utphx