8

Google ドキュメントでホストされている既存のスプレッドシートを持っています。毎月、このドキュメントを更新します。クローンを作成して更新したいスプレッドシートにテンプレート ワークシートがあります。

ワークシートには非常に複雑な数式が含まれているため、ゼロから作成するよりもワークシートを複製することをお勧めします。

ここでは、Google ドキュメントの Python API を使用しています。

http://code.google.com/apis/spreadsheets/data/1.0/developers_guide_python.html

既存のドキュメントでワークシートを複製してコピーする方法を知っている人はいますか?

編集

ある読者を混乱させたようです。Excel スプレッドシートを持っていません。テンプレート ワークシートを含む Google ドキュメント スプレッドシートしかありません。

このワークシートを複製し、名前を変更してから、プログラムで編集したいと思います。

4

6 に答える 6

6
  1. ドキュメントのコピーの手順を使用して、テンプレート ワークシートを複製します。
  2. 複製されたドキュメント内のワークシートのリストにアクセスし、必要なスプレッドシートまで繰り返します。
  3. セル フィードを使用してスプレッドシート内の適切なセルを取得し、値を更新します。
于 2010-11-02T15:43:32.317 に答える
4

うわあ!!!トラックをバックさせます。はるかに簡単なアプローチがあります

月次レポートでも同じことをしようと計画しているので、ここ数週間、これについて少し調べてきました。実際のコードはまだ肉付けされていませんが、進行中に追加します。

Google ドキュメントには、ドキュメントの操作に関連する非常に多くの API や類似の用語があり、少し混乱することがあります。まだご存じない場合は、GAS (Google Apps Scripting) と GAE (Google App Engine) はまったく別のものであるという事実を頭の中で確立してください。それらは同じように聞こえますが、Java が JavaScript に似ているのと同じくらい似ています。

GAS は、検証や動的ドキュメントなどを駆動する Google Docs (将来的にはスタンドアロン モジュールとしてインポートできるようになることを願っています) に埋め込まれた scrips ですが、ほとんどの疑いよりもはるかに強力です (変更/更新などを行うことができます)。外部ドキュメントおよび自動電子メール応答)。これらは Google のサーバー上で実行されるため、軽量である必要があることに注意してください。スクリプトが完了するまでに時間がかかる場合は、実行が途中で中断されます (制限を見つけるためにグーグルで調べてください)。つまり、バニラ JS のみを使用し (jQuery のようなフレームワークは使用しないでください)、可能な限りパフォーマンスの調整を行う必要があります。

一方、GAE は、クラウドのどこかに存在する (利用可能なデータベース層を備えた) Web サーバーのようなものです。これは、ビジネス/利益のための便利な (そして既に展開されている) ミドルウェア レイヤーとして存在し、カスタム アプリを作成して、より重い作業を行うことができます。残念ながら、外部スプレッドシートの API は、私たちが取り組んでいることを単独で達成するにはあまりにも制限されているため、オプションではありません。

Google Apps Scripting と時間ベースのトリガーを使用した自動化

このアプローチは機能するはずですが、少しハック的なアプローチが必要です。

レポート シートを含むワークブックを開きます。[ツール] -> [スクリプトエディタ...] をクリックします。[トリガー] -> [現在のスクリプトのトリガー...] に移動します。

トリガーが存在しない場合は、1 つ追加します。次に、[イベント] ドロップダウン メニューで [時間主導型] を選択します。

サーバー側イベント ハンドラーの世界へようこそ。クラウドベースのドキュメントで得られる優れた機能の 1 つは、ドキュメント内で直接 cron ジョブをトリガーできることです。外部ミドルウェアは必要ありません。

「月のタイマー」にはトリガーがありません。ここがハッキーになるところです。この機能の欠如を回避するには、トリガーを毎日起動し、JavaScript を使用して現在の日付を前日の日付と一致させる必要があります。

【ここにコードが入ります】

まず、タイム トリガー イベント ハンドラーにアタッチされる関数が来ます。このコード ブロックは単純に日付を解析し、それを前の日付と比較し、翌日の比較のために非表示のシート (永続レイヤーとして使用) に値を保存します。新しい月の条件が満たされると、次のコード ブロックが実行されます。

【ここにコードが入ります】

あなたのものは明らかに私のものとは少し異なりますが、基本的な概念は次のとおりです。

  • SpreadSheet オブジェクトを読み込みます (Sheet オブジェクトと混同しないでください)。
  • テンプレートの Sheet オブジェクトを見つけます
  • テンプレート シートのクローンを作成し、適切な日付範囲ベースの名前を付けます

私の次のステップは、月からデータを抽出して積み上げ折れ線グラフを生成し、現在のステータスを上層部に報告することです。

注: ドキュメントのマルチユーザー コラボレーションの性質により、イベントはサーバー側で発生する必要があります。これは私たちにとって大きな問題を引き起こします。コード エラーが発生した場合、イベント コードは別の場所で実行されるため、ブラウザーからのフィードバックは得られません。これに対する唯一の解決策は、トリガーに通知を設定して、スクリプトが失敗したときにすぐに電子メールを送信することです

更新: これを調査しているときに、別のクールなテクニックを見つけました。バグなしでこれを機能させることができれば、Google カレンダーでマークされた日付を使用してトリガーを呼び出すことを試みるかもしれません。

于 2012-01-03T00:33:12.237 に答える
2

まず第一に、私はこれまで Python を使用したことがありませんでしたが、C++ でこれをどのように行ったかを説明します。

cURL を使用して、Google ドキュメント APIに GET リクエストを送信しました。ファイルのバイナリデータが返ってきたので、それをファイルに書き込みました。これで XLS ファイルができたので、ダウンロードしたファイルを操作するために XLS ファイルを読み取ることができる C/C++ ライブラリを使用しました。私が使用した API は、さまざまなオプションをサポートしていました。Excel でできることは何でもできます。修正後、Googleドキュメントに再度アップロードしました。

于 2009-12-09T08:49:13.627 に答える
2

これは本当に複雑です。APIを使用してPythonでスプレッドシートを編集できることを理解しています。Googleは多くのWebサービスでその機能を提供する傾向があり、XMLで作成されたHTTPポストリクエストを何らかの形で送信することですべてが行われます。その部分を知っていることを願っています. t。

これによれば、少なくともワークシートを追加し、他のワークシートから行を読み取り、ワークシートに行を書き込むことができます。必要に応じて、一度に 1 行ずつコピーすることもできますが、行ごとに追加の POST 要求を送信するのは恐ろしい考えのようです。

編集:

私はこれについてますます学んでいますが、元の問題を解決するにはまだ遠いです. このREST 原則の概要では、Web 上のプログラム間で行われる対話の基本的なスタイルについて説明します。グーグルはそれを忠実に守っているようだ。

それはすべて HTTP プロトコル内で行われます。これは、今日まで私がまったく知らなかったものです。このHTTP 仕様では、基本的なゲームが詳しく説明されています。見た目ほど辛口ではありませんし、私はただのマニアかもしれませんが、刺激的な読み物だと思います。合衆国憲法と変わらない。

したがって、ドキュメントを「複製」したいので、特定のワークシートに対して GET リクエストを使用し、そのワークシートを POST のペイロードとして送り返します。

近くなってる :)

于 2009-12-07T03:13:04.287 に答える
1

スプレッドシートを xls としてエクスポートし、XML メタデータで新しい名前を指定して、(少し) 異なる名前の新しいドキュメントとしてアップロードできませんでしたか?

http://code.google.com/apis/documents/overview.htmlの Download および Create/upload Document セクションが役立ちます。

Python API ドキュメントでインポート/エクスポート機能をすぐに確認することはできませんが、いくつかの http 要求を送信することはそれほど悪くありません。

于 2009-12-09T03:12:21.313 に答える