2

Googleサイトで作成および管理されているウェブサイトの一部の添付ファイルを自動的に更新するスクリプトを作成しようとしています。これは、Googleが9月にSites APIをリリースし、 PythonGDataAPIがサイトをサポートすると主張しているために可能になるはずです。ただし、私が見つけることができる最も近いメソッドはと呼ばれclient.updateます。これにより、添付ファイルのメタデータを更新できますが、コンテンツは更新できません。

Java APIでは、添付ファイルの更新は、新しいものを作成してMediaFileSourceから呼び出し、entry.setMediaFileSource(source)続いて。を呼び出すことによって行われentry.updateMedia()ます。ただし、PythonAPIで類似したものは見つかりません。私はばかげていて何かが足りないのですか、それともPython APIを使用してGoogleサイトの添付ファイルを更新することは本当に不可能ですか?

4

4 に答える 4

4

ここのドキュメントは、添付ファイルのコンテンツとメタデータを更新する方法の例を提供します(サブセクション添付ファイルのコンテンツとメタデータの置き換え)

残された唯一のことはexisting_attachment、次のようなもので簡単に実行できるようにすることです。

existing_attachment = None
uri = '%s?kind=%s' % (client.MakeContentFeedUri(), 'attachment')
feed = client.GetContentFeed(uri=uri)
for entry in feed.entry:
  if entry.title.text == title:
    print '%s [%s]' % (entry.title.text, entry.Kind())
    existing_attachment = entry
于 2012-11-07T00:09:43.503 に答える
2

サイトAPIがv1.1に更新されました。これはおそらく新しい追加です

http://code.google.com/apis/sites/docs/1.0/developers_guide_python.html#UpdatingContent

于 2010-01-28T06:41:35.587 に答える
1

わかりました、そこにあるAPIは奇妙で、ドキュメントはあまり明確ではありません。これが私が理解したことです。添付ファイルを初めてアップロードするときは、UploadAttachmentメソッドを使用してアップロードしますが、フォローアップの試行では、Updateを呼び出す必要があります。これを行うコードは次のとおりです。

class AttachmentUploader(object):
  """Uploads a given attachment to a given filecabinet in Google Sites."""

  def __init__(self, site, username, password):
    self.client = gdata.sites.client.SitesClient(
        source="uploaderScript", site=site)
    self.client.ssl = True
    try:
      self.client.ClientLogin(username, password, "some.key")
    except:
      traceback.print_exc()
      raise

  def FindAttachment(self, title):
    uri = "%s?kind=%s" % (self.client.MakeContentFeedUri(), "attachment")
    feed = self.client.GetContentFeed(uri=uri)
    for entry in feed.entry:
      if entry.title.text == title:
        return entry
    return None

  def FindCabinet(self, title):
    uri = "%s?kind=%s" % (self.client.MakeContentFeedUri(), "filecabinet")
    feed = self.client.GetContentFeed(uri=uri)
    for entry in feed.entry:
      if entry.title.text == title:
        return entry
    return None

  def Upload(self, cabinet_title, title, file_path, description):
    """Upload the given file as attachment."""
    ms = gdata.data.MediaSource(file_path=file_path, content_type="text/ascii")

    existing_attachment = self.FindAttachment(title)
    if existing_attachment is not None:
      existing_attachment.summary.text = description
      updated = self.client.Update(existing_attachment, media_source=ms)
      print "Updated: ", updated.GetAlternateLink().href
    else:
      cabinet = self.FindCabinet(cabinet_title)
      if cabinet is None:
        print "OUCH: cabinet %s does not exist" % cabinet_title
        return
      attachment = self.client.UploadAttachment(
          ms, cabinet, title=title, description=description)
      print "Uploaded: ", attachment.GetAlternateLink().href
于 2010-03-11T12:08:03.730 に答える
0

動作するはずのupload_attachmentメソッドがあります。また、SitesAPIのサンプルコードを確認することもできます。このコードはそのメソッドを使用します。

于 2010-01-04T19:50:53.083 に答える