2012-06-27 61 views
0

我的用戶將不得不每4周在新的電子表格中授權腳本。我想在第一次打開電子表格時立即調用授權對話框,如果腳本已經被授權,則不要調用它。我可以測試腳本是否經過授權,如果不是,請致電Google授權對話框?

目前,我發現最簡單的方法是讓他們在空白工作表上單擊「轉到主表」按鈕(即帶有附加腳本的圖形)。如果他們已經授權他們直接進入Main,否則會觸發授權通知 - 在這種情況下,他們最終必須在授權後再次點擊「轉到主表」按鈕。

我不喜歡它,它笨重。有沒有方法可以測試腳本是否需要直接授權和調用對話框,例如從onOpen事件?

+0

你的解決方法並不是那麼糟;-)你也可以刪除這個第一張空白紙張的功能,只有在經過授權才能運行,所以你會擺脫這種警告... –

+0

謝謝Serge ...我需要更多的問題,但是我意外地進入,所以我會再次開始 – fullOfGAS

+0

行...第二次嘗試 – fullOfGAS

回答

1

這是一個單一用戶使授權過程簡單明瞭的可行解決方案。 我知道它不會因爲你有多個用戶在同一個電子表格,以滿足你的使用情況,但它可以有部分,你可能會感興趣的

這裏是代碼和​​(做它的一個副本得到的編輯權限,不要忘記它的作品只有一次!(至少就授權而言,你可以隨時撤消刪除板材!!))

function onOpen(){ 
    if(SpreadsheetApp.getActiveSpreadsheet().getNumSheets()==1){ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuEntries = [{name: "test", functionName: "test"}, 
        ]; 
    ss.addMenu("Recherche",menuEntries);// custom menu 
        } 
} // menu appears only if authorization has been processed 

function test(){ 
    if(SpreadsheetApp.getActiveSpreadsheet().getNumSheets()==2){ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);// make first sheet active to be sure 
    var del = ss.deleteActiveSheet(); 
    onOpen; 
    } 
    Logger.log(findThelastRow('d',0)) 
    } 
// 
// 
    function findThelastRow(column,index){ 
       var doc = SpreadsheetApp.getActiveSpreadsheet(); 
       var lastRow = doc.getSheets()[index].getLastRow()+1;// check last row on the appropriate sheet 
       var coldata = doc.getSheets()[index].getRange(column+2+':'+column+lastRow).getValues();// I begin on Row 2 just as you did 
      for(i=coldata.length-1;i>=0;i--){ 
      if(coldata[i][0]!=''){return i+2;break} 
      } 
      return 0; 
     } 

注意我已經把功能這個例子只是個例子!

重要的是當授權完成後刪除第一張表的部分。希望這將是足夠清晰的;-)