web-dev-qa-db-ja.com

Chrome Googleスプレッドシートへの拡張機能の書き込み

私はいくつかの研究を行ってきましたが、何らかの理由でこれを示す良い例をどこにも見つけることができず、それが可能であるかどうかさえ疑問に思い始めています。

私が探しているのは、拡張機能にGoogleスプレッドシート内にデータを書き込んでもらい、シートがデータベースとして使用されるようにすることです。

誰かが私が従うことができるドキュメントを持っていますか? Spreadsheet APIがJavaScriptを許可していないように思われることを考えると、それも可能ですか?

サンクス。

22
Albert

はい、それは間違いなく可能です。私はJavascriptを使用してSpreadsheetAPIを広範囲に使用しました。ここに記載されているように、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
}
11
Ohhh

あなたは私が数ヶ月前に持っていたのと同じ質問をしていると思います。同じことを行うライブラリを探していましたが、見つからなかったため、 gsloader というライブラリを作成することになりました。私はこれでこのライブラリを使用しています jiraProgressTracker chrome拡張機能。Chrome拡張機能は開発中ですが、gsloaderライブラリを使用する準備ができています。

これがあなたがする必要があることです。

  1. thishttps://cloud.google.com/console#/project の下にGoogleCloudプロジェクトを作成します。しばらくお待ちください。しばらく時間がかかります。
  2. 「登録済みアプリ」の下で、「サービスアカウント-プロジェクト」を削除しないでください。
  3. [登録済みアプリ]で、新しいアプリを登録し、プラットフォームWebアプリケーションを選択します。
  4. [API]で、[ドライブAPI]を選択します。
  5. 新しく作成したアプリで、「webOrigin」のchrome application url(chrome-extension://など))を貼り付けます
  6. ステップ3で作成したアプリからOAuth 2.0クライアントID」から「クライアントID」をコピーします
  7. 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")

    ここですべてに言及するのではなく、使用できるメソッドとオブジェクトが十分にあるので、ドキュメントを利用できるようにします。

全体的にどのように機能するのか教えてください。

9
vkadam