2016-12-11 62 views
1
function try_A(){ 
    var range = SpreadsheetApp.getActiveSheet().getRange("B1"); 
    var url = range.getValue(); 
    var url_array = url.split('='); 
    var id = url_array[1]; 
    var folder = DriveApp.getFolderById(id); 
} 

所以函數try_A讀取鏈接到谷歌驅動器文件夾的URL,並解析它以獲取文件夾ID。但是,如果我設置了一個時間觸發器,例如每1分鐘調用一次,那麼它會一直通知我一個錯誤,如無法找到相應ID的信息,或者我沒有權限。錯誤對應於此行: 「var folder = DriveApp.getFolderById(id);」。但是,如果我手動運行此功能,沒有任何問題。這是爲什麼? Thx提前。Google應用程序腳本時間觸發錯誤

+0

我會嘗試登錄id的值,看看有什麼了吧。一個可能的問題是你使用'getActiveSheet';這種方法在交互式使用腳本時很方便,但對於定時觸發器來說並不適合。改爲使用'getSheetByName(name)'。 – FTP

+1

當*** time ***觸發器運行腳本時沒有活動工作表。腳本可以檢測活動工作表或範圍的唯一時間就像編輯打開電子表格的用戶所運行的On Edit或On Change觸發器。 –

回答

1

看起來你總是讓細胞「B1」,所以你可以使用:

function try_A() { 
    var ss,sh,range,url; 

    ss = SpreadsheetApp.getActiveSpreadsheet(); 
    sh = ss.getSheetByName('name here'); 
    range = sh.getRange("B1"); 

    Logger.log('ss: ' + ss)//View the Logs to see what is printed 
    Logger.log('sh: ' + sh) 
    Logger.log('range: ' + range) 

    url = range.getValue(); 
    Logger.log('url: ' + url) 

    var url_array = url.split('='); 
    var id = url_array[1]; 
    var folder = DriveApp.getFolderById(id); 
} 
相關問題