5

私のアプリケーションはデータのテーブルを生成し、ユーザーの Google ドライブに新しいスプレッドシート ドキュメントを作成します。個々のセルに書式 (色、フォントの太さ、幅など) を追加するにはどうすればよいですか? ドキュメントを見つけることができないようですgoogle-api-ruby-client..

私の調査結果のほとんどは、サポートされていないと述べている Google API メーリング リストにさかのぼります。
しかし、別のアプリケーションで目的の結果が得られることがわかりました。ドキュメントを Google ドライブにエクスポートする "Smartsheet" の例:

Smartsheet.com から:

Smartsheet.com で

そして、私のGoogleドライブの結果のシート:

Google ドライブで

4

5 に答える 5

4

APIはデータへのアクセスのみを提供し、フォーマットを追加するためのメソッドを公開しません。

于 2012-12-04T04:53:13.153 に答える
4

Smartsheet は、Google API の機能を利用して Excel ファイルをインポートします。コードはおおよそ次の行に沿っています。

DocsService client = new DocsService(<YOUR APP NAME>);
client.setOAuthCredentials(<OAUTH PARAMETERS>);

DocumentListEntry newEntry = new SpreadsheetEntry();
newEntry.setMediaSource(new MediaByteArraySource(<EXCEL FILE BYTE ARRAY OUTPUT STREAM>, DocumentListEntry.MediaType.XLS.getMimeType()));
newEntry.setTitle(new PlainTextConstruct(<FILE NAME>));

DocumentListEntry insertedEntry = client.insert(new URL("https://docs.google.com/feeds/default/private/full/"), newEntry);

// This is your URL to the new doc
String docUrl = insertedEntry.getDocumentLink().getHref();

Smartsheet を Apache POI 経由で書式設定された Excel ファイルにエクスポートする機能は既にありました。Google スプレッドシートへのエクスポートの追加は、実装が非常に簡単で、API を介して実行できる以上の追加機能を提供しました。

返信が遅れて申し訳ありません - この質問に出くわしました。

于 2013-06-13T20:13:11.593 に答える
2

別のオプション (および最終的に使用したオプション) は、すべての書式設定が事前に構成された Google スプレッドシート ファイルをテンプレートとして手動で作成することです。次に、ユーザーの Google ドライブに新しいスプレッドシート ドキュメントを作成する代わりに、次のようにテンプレートをコピーします。

var config = require('./config');
var google = require('googleapis');

function createSheetFromTemplate(user, templateFileId, done) {

  var oauth2Client = new google.auth.OAuth2(config.google.clientId, config.google.clientSecret);

  oauth2Client.setCredentials({
    access_token: user.google.token,
    refresh_token: user.google.refreshToken,
  });

  var drive = google.drive({
    version: 'v2',
    auth: oauth2Client
  });
  drive.files.copy({
    fileId: templateFileId,
    resource: {
      title: 'New Google Sheet',
      parents: [{
        id: 'root'
      }]
    }
  }, function(err, response) {
    if (err) done(err)

    initializeSpreadsheet(response.id, user, done);
  });
}

そのコードでは、templateFileId は共有テンプレートのファイル ID です。この fileId は、共有テンプレート ファイルからさまざまな方法で取得できますが、手っ取り早い方法は、共有するときに URL からコピー アンド ペーストすることです。

たとえば、共有 URL が次の場合:

https://docs.google.com/spreadsheets/d/1234567890abcdefghijklmnop/edit?usp=sharing

次に、ファイル ID は1234567890abcdefghijklmnop です。

私の場合、テンプレート自体にプライベートなものは何もないため、ここで説明するように、「閲覧可能」に設定された「リンクを知っている全員」と共有しました。

https://support.google.com/drive/answer/2494886

テンプレート ファイルの内容を非公開にする必要がある場合は、config.google.clientId で指定されたアカウントが確実にアクセスできるようにする方法を見つける必要があります。

それが役立つことを願っています!

于 2015-02-12T05:26:13.403 に答える
1

私のように、事前にフォーマットされた Excel シートをアップロードするだけでは不十分な場合は、Google Apps Script が最適なようです。Range クラスを使用すると、具体的には、求めていた書式設定の少なくとも一部を操作できます。

https://developers.google.com/apps-script/reference/spreadsheet/range

setFontColor() と setFontWeight() はありますが、セル幅についてはまだわかりません。

重要なことに、Google Drive API SDK (私の場合は Node/Javascript、あなたの場合は Ruby) を使用して作成しているシートに Google Apps Script をバインドする方法もまだわかっていません。

https://developers.google.com/apps-script/guides/bound

あなたの質問からしばらく経っているので、あなたはすでに別の方法で解決していると思います。また、アプリのすべてを Google Apps Script に移植することを必ずしも提案しているわけではありません (私自身も真剣に考えていますが...)。 google-api-ruby-client を使えば、すぐに使えるかもしれません。

于 2015-01-12T17:28:38.507 に答える