这是我解决该问题的解决方案:
- 第 1 步 - 创建一个包含幻灯片的演示文稿
- 第 2 步 - 创建一个空白演示文稿
- 第 3 步 - 使用我创建的此函数调用要复制幻灯片的演示文稿:
注意:$external_page
有你的演示文稿的所有幻灯片,所以你可以像这样循环播放它
public function createSingleSlide(array $slide_elements,string $presentationId,string $id_slide_multiple){
$external_page = $this->getPresentation($presentationId);
$index = 0;
foreach ($external_page['slides'] as $key => $value) {
if($value['objectId'] != $id_slide_multiple ){
// create a blank slide
$slideId = 'slide_'.rand();
$requests_slide = $this->createSlide($slideId,$index);
$response = $this->executeRequest($requests_slide);
foreach ($value['pageElements'] as $key_pe => $value_pe) {
// we have to do test here if shape or table
if(isset($value_pe['shape'])){
$shapeType = $value_pe['shape']['shapeType'];
$elementId = $shapeType.'_'.rand();
$textElements = $value_pe['shape']['text']['textElements'];
$requests = $this->createShape($elementId,$shapeType,$slideId,$value_pe['size'],$value_pe['transform']);
$response = $this->executeRequest($requests);
//insert all text of shape, table...etcs
foreach ($textElements as $key_text => $value_text) {
$text = $value_text['textRun']['content'];
if(isset($text) && !empty($text && $text !="\n") ){
$requests_text = $this->insertText($elementId,$text);
$response = $this->executeRequest($requests_text);
$requests_style = $this->updateTextStyle($elementId,$value_text['textRun']['style']);
$response = $this->executeRequest($requests_style);
}
}
}elseif (isset($value_pe['table'])) {
$rows = $value_pe['table']['rows'];
$columns = $value_pe['table']['columns'];
$elementId = 'Table_'.rand();
$requests_table = $this->createTable($elementId,$slideId,$value_pe['size'],$value_pe['transform'],$rows,$columns);
$response = $this->executeRequest($requests_table);
// insert all rows in table
foreach ($value_pe['table']['tableRows'] as $key_rows => $value_rows) {
foreach ($value_rows['tableCells'] as $key_cells => $value_cells) {
$textElements = $value_cells['text']['textElements'];
$tableCellProperties = $value_cells['tableCellProperties'];
$location = array();
$rowSpan = $value_cells['rowSpan'];
$columnSpan = $value_cells['columnSpan'];
if(isset($value_cells['location']['rowIndex'])){
$location['rowIndex'] = $value_cells['location']['rowIndex'];
}
if(isset($value_cells['location']['columnIndex'])){
$location['columnIndex'] = $value_cells['location']['columnIndex'];
}
//insert all text of shape, table...etcs
foreach ($textElements as $key_text => $value_text) {
$text = $value_text['textRun']['content'];
$requests_text_and_style =array();
if(isset($text) && !empty($text && $text !="\n") ){
$requests_text_and_style[] = $this->insertTableText($elementId,$text,$location);
$requests_text_and_style[] = $this->updateTableCellProperties($elementId,$tableCellProperties,$location,$rowSpan,$columnSpan);
$requests_text_and_style[] = $this->updateTextStyleTable($elementId,$value_text['textRun']['style'],$location);
$response = $this->executeRequest($requests_text_and_style);
}
}
}
}
}
}
// replace varaibales in slide $slideId
$requests_texts = array();
if(isset($slide_elements['replaceText'])){
$requests_texts[] = $this->replaceText($slide_elements['replaceText']);
}
if(isset($slide_elements['replaceAllShapesWithImage'])){
$requests_texts[] = $this->replaceAllShapesWithImage($slide_elements['replaceAllShapesWithImage']);
}
$response = $this->executeRequest($requests_texts);
$index++;
}
}
}
您可以$presentationId
在您的链接演示 G-slide 上获得https://docs.google.com/presentation/d/{{presentationId}}/edit#slide=id.p
所有此功能:
- 创建幻灯片()
- 执行请求
- 创建形状
- 插入文本
- 更新文本样式
- 替换文本
- 替换AllShapesWithImage
- 创建表
- ...
您可以在 Google slide API Doc.it 上找到如何创建它非常简单。好看!。