通过 PHP 重复 Google Slides API“请求”的功能

问题描述

我是使用 PHP 的 Google Slides API 的新手。我正在编写一个脚本,通过我的脚本生成幻灯片。如果我在脚本中按顺序排列所有“请求”(即 createSlide、createTable、insertText),.....我可以在 Google 中生成幻灯片。但是,我想通过使用函数来最小化所有请求,但一直遇到错误

{ "error": { "code": 400,"message": "Invalid requests[1]: No request set.","errors": [ { "message": "Invalid requests[1]: No request set.","domain": "global","reason": "badRequest" } ],"status": "INVALID_ARGUMENT" } } %s

我的测试示例代码

function createNewSlide($requests,$slide_id) {
        $requests[] = new Google_Service_Slides_Request([
                'createSlide' => [
                'objectId' => $slide_id
                ]
        ]);
     return $requests;
   } 

$requests = [];
$slide_id = 'unique_slide_id_'.rand(1,9999999);
$requests[] = createNewSlide($requests,$slide_id);

///////////////////////////////////////////////////////
// Execute the request.
$batchUpdateRequest = new Google_Service_Slides_BatchUpdatePresentationRequest(array(
    'requests' => $requests
));
try {
  $response = $slidesService->presentations->batchUpdate($created_presentation->presentationId,$batchUpdateRequest);
    print("A new slide was added to the presentation<br>");
} catch (\Exception $e) {
    //print($e->getMessageAsstring()." \n%s\n");
    print($e->getMessage()." \n%s\n");
}
//////////////////////////////////////////////////////////

解决方法

从注释继续,当你写$requests[] =时,意味着将结果添加到一个数组中。然后返回结果数组。由于您只想返回 google 对象,因此您不必将 $requests 传递给函数,而只需从函数返回 google 对象。

function createNewSlide($slide_id) {
    return new Google_Service_Slides_Request([
            'createSlide' => [
            'objectId' => $slide_id
            ]
    ]);
} 

然后您可以将函数返回的内容添加到 $requests 数组中。

$requests[] = createNewSlide($slide_id);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...