2016-11-19 3 views
0

После того, как я использую Google Slide API для создания слайдов для меня, я вижу текстовое поле с текстом «Нажмите, чтобы добавить текст», «Нажмите, чтобы добавить заголовок», И то же самое для двух сторон столбца, как я могу установить текст для правого 'Нажмите, чтобы добавить текст', и то же самое для левой.Google Slide API, как заменить текст «Нажмите, чтобы добавить текст»

Как я могу программно узнать эти текстовые поля и задать текст, который я хочу?

Вот код: I 1) создать слайд и сделать его TITLE_AND_TWO_COLUMNS макет 2) создать форму и 3) вставить текст в форму. Но при просмотре слайд в Google диск, я вижу «Нажмите, чтобы добавить текст»

 IList<Request> requests = new List<Request>(); 
     String slideId = "MyNewSlide_001"; 
     requests.Add(new Request() 
     { 
      CreateSlide = new CreateSlideRequest() 
      { 
       ObjectId = slideId, 
       InsertionIndex = 1, 
       SlideLayoutReference = new LayoutReference() 
       { 
        PredefinedLayout = "TITLE_AND_TWO_COLUMNS" 
       } 
      } 
     }); 

     String textBoxId = "MyTextBox_01"; 
     Dimension pt350 = new Dimension() 
     { 
      Magnitude = 350.0, 
      Unit = "PT", 
     }; 
     requests.Add(new Request() 
     { 
      CreateShape = new CreateShapeRequest() 
      { 
       ObjectId = textBoxId, 
       ShapeType = "TEXT_BOX", 
       ElementProperties = new PageElementProperties() 
       { 
        PageObjectId = slideId, 
        Size = new Size() 
        { 
         Height = pt350, 
         Width = pt350 
        }, 
       }, 
      } 
     }); 

     requests.Add(new Request() 
     { 
      UpdateShapeProperties = new UpdateShapePropertiesRequest() 
      { 
       ObjectId = textBoxId, 
       ShapeProperties = new ShapeProperties 
       { 
        ShapeBackgroundFill = new ShapeBackgroundFill 
        { 
         SolidFill = new SolidFill 
         { 
          Color = new OpaqueColor 
          { 
           ThemeColor = "HYPERLINK" 
          } 
         } 
        } 
       }, 
       Fields = "shapeBackgroundFill.solidFill.color,outline" 
      }, 
     }); 

     // Insert text into the box, using the object ID given to it. 
     requests.Add(new Request() 
     { 
      InsertText = new InsertTextRequest() 
      { 
       ObjectId = textBoxId, 
       InsertionIndex = 0, 
       Text = "New Box Text Inserted" 
      } 
     }); 
+0

Каков ваш код для создания слайдов? Что вы пробовали? – Bardy

ответ

1

Эти коробки с «Нажмите, чтобы добавить текст» текст являются заполнители формы, которые автоматически копируются на слайд из макета. Этот текст отображается только в редакторе: они не будут иметь никакого текста в текущем режиме, если вы не вставляете текст в них напрямую.

Вы можете вставлять текст в них, как и любые другие фигуры в API слайдов.

  • Прочитайте страницу или презентацию с одним из GET API, (presentations.get или presentations.pages.get)
  • Найти идентификаторы объекта из заполнителей, которые вы хотите написать. Вы можете определить, какие это , который смотрит на pageElement.shape.placeholder сообщение на каждом элементе страницы на вашем слайде. Вы хотите один с type = TITLE за заголовок и так далее.
  • Вызов batchUpdate с запросом InsertText, чтобы добавить текст, так же, как вы уже делаете в вашем коде

Часть этого кроется в Edit text in a specified shape в документации.

+0

Можно ли указать мой заполнитель TITLE в пользовательском макете уникальный идентификатор, чтобы я мог избежать шага get до пакетного обновления? В идеале я хочу: 1. создать новый слайд из пользовательского layoutId 2. установить текст заголовка все в одном запросе на обновление пакетного, не делая ПОЛУЧИТЬ вызов после # 1, ища ObjectId, а затем сделать отдельный запрос на выполнение № 2. – rideon88

+0

Да - см. Параметр 'placeholderIdMappings' на' CreateSlideRequest' в batchUpdate. Для этой специфической usecase есть несколько документов (https://developers.google.com/slides/how-tos/create-slide#filling_in_placeholders). –

Смежные вопросы