0

我敢肯定,对于具有编程技能的人(不像我)来说,这很容易做到。我正在使用 Google Sites API。基本上,我希望能够批量创建一堆页面,而不是使用缓慢的 Web 表单一个一个地创建它们,这很痛苦。

我已经安装了所有必要的文件,阅读了文档,并成功运行了这个示例文件。事实上,这个示例文件已经包含用于在 Google 协作平台中创建页面的 python 代码:

elif choice == 4:
      print "\nFetching content feed of '%s'...\n" % self.client.site

      feed = self.client.GetContentFeed()
      try:
        selection = self.GetChoiceSelection(
            feed, 'Select a parent to upload to (or hit ENTER for none): ')
      except ValueError:
        selection = None

      page_title = raw_input('Enter a page title: ')

      parent = None
      if selection is not None:
        parent = feed.entry[selection - 1]

      new_entry = self.client.CreatePage(
          'webpage', page_title, '<b>Your html content</b>',
          parent=parent)
      if new_entry.GetAlternateLink():
        print 'Created. View it at: %s' % new_entry.GetAlternateLink().href

我了解页面的创建围绕 page_title 和 new_entry 和 CreatePage。但是,我不想一次创建一个页面,而是要创建多个页面。

我做了一些研究,我认为我需要类似的东西

page_titles = input("Enter a list of page titles separated by commas: ").split(",")

收集页面标题列表(如 page1、page2、page3 等——我计划使用文本编辑器或电子表格生成一长串逗号分隔的名称)。

现在我试图弄清楚如何获取该字符串并将其“提供”给 new_entry 以便它为字符串中的每个值创建一个单独的页面。我不知道该怎么做。有人可以帮忙吗?

如果有帮助,这就是 Google API 创建页面所需的内容:

entry = client.CreatePage('webpage', 'New WebPage Title', html='<b>HTML content</b>')
print 'Created. View it at: %s' % entry.GetAlternateLink().href

谢谢。

4

2 回答 2

0

您可以使用 for 循环遍历 dict 对象并创建多个页面。这是一个小片段,可以帮助您入门。

import gdata.sites.client

client = gdata.sites.client.SitesClient(
        source=SOURCE_APP_NAME, site=site_name, domain=site_domain)

pages = {"page_1":'<b>Your html content</b>',
         "page_2":'<b>Your other html content</b>'}

for title, content in pages.items():
    feed = client.GetContentFeed()

    parent = None
    if selection is not None:
        parent = feed.entry[selection - 1]

    client.CreatePage('webpage', page_title, content, parent=parent)

至于从外部来源提供脚本,我建议使用 csv 文件之类的东西

##if you have a csv file called pages.csv with the following lines
##page_1,<b>Your html content</b>
##page_2,<b>Your other html content</b>

import csv

with open("pages.csv", 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        title, content = row
        client.CreatePage('webpage', title, content, parent=parent)
于 2013-07-02T21:29:56.090 回答
0

每当您想“使用该列表对每个值执行尽可能多的命令”时,这就是一个for循环。(它可能是一个隐式 for 循环,例如,在map调用或列表推导中,但它仍然是一个循环。)

所以,在这之后:

page_titles = raw_input("Enter a list of page titles separated by commas: ").split(",")

你来做这件事:

for page_title in page_titles:
    # All the stuff that has to be done for each single title goes here.
    # I'm not entirely clear on what you're doing, but I think that's this part:
    parent = None
    if selection is not None:
        parent = feed.entry[selection - 1]

    new_entry = self.client.CreatePage(
        'webpage', page_title, '<b>Your html content</b>',
        parent=parent)
    if new_entry.GetAlternateLink():
        print 'Created. View it at: %s' % new_entry.GetAlternateLink().href

这通常就是它的全部内容。

于 2013-07-02T22:02:56.567 回答