问题描述
我是使用 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);