2016-03-24 63 views
1

我有一個非常具體的情況,我正在用谷歌應用程序腳本構建服務(addon),並且有一個功能我想嘗試但我一直在努力處理文檔。Google表格允許訪問一個web應用程序

我將構建和部署一個webapp,任何人都可以訪問它,一個簡單的表單。我希望這個表單在谷歌表上寫一行,交易是我不會知道工作表編號,我正在構建一個附加組件,它將允許任何工作表訪問web應用程序並收回帖子或獲取變量並使用它們。

任何想法?

+0

這是什麼樣的附加組件?電子表格?附加組件與其安裝的文檔(Spreadsheet)相關聯。您可以使用SpreadsheetApp.getActiveSpreadsheet()來獲取電子表格。如果情況並非如此,那麼您需要爲用戶提供一個文件選擇器,以便他們可以選擇他們想要使用的電子表格。 [鏈接到Google文件選取器](https://developers.google.com/picker/) –

+0

您的問題被視爲「Off Topic」,因爲它是一般性的。堆棧溢出不是一般的建議。您可以加入Apps腳本社區[鏈接到Apps腳本組](https://plus.google.com/communities/102471985047225101769)和附加組[Link](https://plus.google.com/communities/117193953428311185494) –

+0

非常感謝桑迪,是的,它將是一個電子表格插件,我的問題是如何告訴電子表格插件的安裝位置,以允許訪問獨立的webapp? –

回答

1

謝謝桑迪我也有同樣的想法;

首先,我構建一個附加組件,該附加組件將允許表單由webApp寫入,並提供帶有表單ID的GET變量。

function useWebApp() { 
    var sheetID = SpreadsheetApp.getActiveSpreadsheet().getId(); 
    var openFile = DriveApp.getFileById(sheetID) 
    openFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.EDIT); 
    SpreadsheetApp.getUi().alert("https:// [WEBAPPLINK] /exec?sheet="+sheetID); 
} 

第二,如所建議的那樣,我構建WebApp並使用提供的HTTP GET變量在表單上進行寫入。

function doGet(e) { 
    var app = UiApp.createApplication(); 
    var targetSheet = e.parameter.sheet; 
    var label = app.createLabel('Parameter value sheet:'+e.parameter.sheet; 
    app.add(label); 

    //insertSheetLine(e.parameter.sheet); //test to insert rows directly 

PropertiesService.getScriptProperties().setProperty('targetSheet', e.parameter.sheet); //define a global variable in the script 
    return HtmlService.createHtmlOutputFromFile('index') 
     .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

這樣,只要Web應用程序發佈到模擬所有者,就可以避免OAuth交易。考慮到這一點,任何人都可以使用它並在沒有註冊的工作表中書寫。 主要想法是使用可安裝的useWebApp方法發佈附加組件,以便它可以在任何工作表上使用。

再次感謝桑迪

相關問題