12

私はいくつかの調査を行っていますが、何らかの理由でこれを示す良い例が見つからず、可能かどうか疑問に思っています。Chrome拡張機能Googleスプレッドシートへの書き込み

私が探しているのは、Googleスプレッドシート内にデータを書き込んで、そのシートをデータベースとして使用することです。

誰でも私が辿ることができるドキュメントはありますか?スプレッドシートAPIがJavaScriptを許可していないように見えることを考えれば、それは可能ですか?

THanks。

+2

広すぎますか?実際には、ハッピーではない方法が1つしかありません(APIへのOAUTH、xmlリクエスト) –

+2

それは間違いなく広すぎず、私はその答えが必要です。 –

答えて

5

私は数ヶ月前と同じ質問をしていると思います。私は同じことをするライブラリを探していましたが、何も見つかりませんでしたので、gsloaderという名前のライブラリを作成することになりました。このjiraProgressTrackerのChrome拡張機能でこのライブラリを使用しています。 Chrome拡張機能は開発中ですが、gsloaderライブラリはすぐに使用できます。

ここにあなたがする必要があります。

  1. thishttps://cloud.google.com/console#/projectの下にGoogleクラウドプロジェクトを作成します。辛抱強くしばらく時間がかかります。
  2. "Registered Apps"のでは、 "サービスアカウント - プロジェクト"は削除しないでください。
  3. [登録済みアプリ]で、新しいアプリを登録し、プラットフォームWebアプリケーションを選択します。
  4. 「API」で「ドライブAPI」を選択します。
  5. 新しく作成されたアプリでは、あなたのクロムアプリケーションのURLを貼り付け(クロム延長のように://)ステップ3
  6. 追加で作成したアプリからのOAuth 2.0クライアントIDから「ウェブ起源」
  7. コピー「クライアントID」についてgsloaderライブラリ、あなたのhtmlページ。 require.jsjs-loggerとjQueryが必要です。 requirejsを使用できない場合は、requirejs依存関係を削除してライブラリを作成しようとしていますが、それにはもっと時間がかかるかもしれません。
  8. 次のコードスニペットを使用してください。
    //ドゥ認証
    var clientId = "<your client id>";
    GSLoader.setClientId(clientId);

    //ロード既存のスプレッドシート
    GSLoader.loadSpreadsheet("spreadsheet id");

    //作成したスプレッドシート
    あり、十分な方法があると言及するのではなく、で動作するように使用可能なオブジェクト GSLoader.createSpreadsheet("spreadsheet id")

    ここではすべて私はドキュメントを利用可能にしようとします。

私に教えてください。全体的にどのように動作しますか?

7

はい、間違いなく可能です。私はJavascriptを使って広範囲にスプレッドシートAPIを使用しました。 https://developers.google.com/google-apps/spreadsheets/

これは、OAuth2を使用して署名されたリクエストを送信する必要があります(古い認証プロトコルはもはや本当に信頼できるものではありません)。)ので、JSOのようなOAuth2ライブラリを使うことをお勧めします。 https://github.com/andreassolberg/jso

JavaScriptを書くときには、プロトコルAPIとのインタフェースをとるXML文字列を作成する関数を記述する必要があります。応答を解析するのはかなり簡単です。私が使用したコードのスニペットを含めました。また、ここでJQueryを使用して、関連する質問への私の答えを見ることができます。 JQuery .ajax POST to Spreadsheets API?

function appendSpreadsheet(){ 

//Constructs the XML string to interface with the Spreadsheet API. 
//This function adds the value of the param foo to the cell in the first empty row in the column called 'columnTitle'. 
//The Spreadsheet API will return an error if there isn't a column with that title. 
function constructAtomXML(foo){ 
    var atom = ["<?xml version='1.0' encoding='UTF-8'?>", 
      '<entry xmlns="http://www.w3.org/2005/Atom" xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended">',//'--END_OF_PART\r\n', 
      '<gsx:columnTitle>',foo,'</gsx:columnTitle>',//'--END_OF_PART\r\n', 
      '</entry>'].join(''); 
    return atom; 
}; 

var params = { 
'method': 'POST', 
'headers': { 
    'GData-Version': '3.0', 
    'Content-Type': 'application/atom+xml' 
}, 
'body': constructAtomXML(foo) 
}; 

var docId //Get this from the spreadsheet URL or from the Google Drive API. 
var worksheetId = 'od6'; //The worksheet Id for the first sheet is 'od6' by default. 

url = 'https://spreadsheets.google.com/feeds/list/'+docId+'/'+worksheetId+'/private/full'; 

sendSignedRequest(url, handleSuccess, params); //Use your OAuth2 lib 
} 
+0

どのようにhttps://apis.google.com/js/client.jsをインポートできますか? – noogui

関連する問題