Php GoogleSheetsAPI:如果一行中有空白单元格,它将返回一个完全空的行

Php GoogleSheetsAPI:如果一行中有空白单元格,它将返回一个完全空的行,php,arrays,google-sheets,google-sheets-api,google-api-php-client,Php,Arrays,Google Sheets,Google Sheets Api,Google Api Php Client,我正在使用PHP从工作表中收集数据。我正在丢失信息,因为如果有任何空单元格,谷歌会删除整行 $array指的是从谷歌表单中收集的一些数据: $range = "Sheet1!A1:C99"; $response = $service->spreadsheets_values->get($spreadsheetId, $range); $array = $response->getValues(); 但是工作表中的某些单元格是空的,如果其中任何一个单元格位于

我正在使用PHP从工作表中收集数据。我正在丢失信息,因为如果有任何空单元格,谷歌会删除整行

$array
指的是从谷歌表单中收集的一些数据:

$range = "Sheet1!A1:C99";
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$array = $response->getValues();
但是工作表中的某些单元格是空的,如果其中任何一个单元格位于该行的左边框或右边框,Google将删除该行中的所有数据<代码>[2]=>[3]

但是,这里有一个示例,它不是PHP示例,我不能在这里应用它。

该方法将返回一个2D值数组。您可以将其视为矩阵而不是数组,因为所有行都具有相同数量的“列”元素(即使它们在工作表中为空)。因此,罪魁祸首是其他地方的XD

考虑到这一点,请尝试以下方法:

$keys=array\u shift($array);//从$array提取并排除标题行
/*
将键组合到$array中的每一行*/
foreach($array as&$row){
$row=数组\组合($keys,$row);
};
打印(数组);

更新: 正如在的
values[]
字段中所述:“对于输出,将不包括空的尾随行和列。”因此,您真的不能指望使用该方法来实现所需的目的

或者,您可能需要使用Apps脚本和我上面提到的
Range.getValues()
方法。

该方法将返回一个2D值数组。您可以将其视为矩阵而不是数组,因为所有行都具有相同数量的“列”元素(即使它们在工作表中为空)。因此,罪魁祸首是其他地方的XD

考虑到这一点,请尝试以下方法:

$keys=array\u shift($array);//从$array提取并排除标题行
/*
将键组合到$array中的每一行*/
foreach($array as&$row){
$row=数组\组合($keys,$row);
};
打印(数组);

更新: 正如在的
values[]
字段中所述:“对于输出,将不包括空的尾随行和列。”因此,您真的不能指望使用该方法来实现所需的目的


作为替代方案,您可能希望使用Apps脚本和我上面提到的
Range.getValues()
方法。

我花钱请人来解决这个问题,他就是这么做的:

    $range = "Sheet1!A2:C99";
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();


$response = [];

foreach ($values as $value) {

    $data = [
        'animal' => null,
        'descripcion' => null,
        'peso' => null
    ];

    if (isset($value[0])) {
        $data['animal'] = $value[0];
    }

    if (isset($value[1])) {
        $data['descripcion'] = $value[1];
    }

    if (isset($value[2])) {
        $data['peso'] = $value[2];
    }

    $response[] = $data;
}

echo '<pre>';
print_r($response);
echo '</pre>';
$range=“Sheet1!A2:C99”;
$response=$service->spreadsheets\u values->get($spreadsheetId,$range);
$values=$response->getValues();
$response=[];
foreach($value作为$value){
$data=[
“动物”=>null,
'Description'=>null,
'比索'=>空
];
如果(isset($value[0])){
$data['animal']=$value[0];
}
如果(isset($value[1])){
$data['Description']=$value[1];
}
如果(isset($value[2])){
$data['peso']=$value[2];
}
$response[]=$data;
}
回声';
打印(回复);
回声';
它确实有用


谢谢

我花钱请人来修理,他就是这么做的:

    $range = "Sheet1!A2:C99";
$response = $service->spreadsheets_values->get($spreadsheetId, $range);
$values = $response->getValues();


$response = [];

foreach ($values as $value) {

    $data = [
        'animal' => null,
        'descripcion' => null,
        'peso' => null
    ];

    if (isset($value[0])) {
        $data['animal'] = $value[0];
    }

    if (isset($value[1])) {
        $data['descripcion'] = $value[1];
    }

    if (isset($value[2])) {
        $data['peso'] = $value[2];
    }

    $response[] = $data;
}

echo '<pre>';
print_r($response);
echo '</pre>';
$range=“Sheet1!A2:C99”;
$response=$service->spreadsheets\u values->get($spreadsheetId,$range);
$values=$response->getValues();
$response=[];
foreach($value作为$value){
$data=[
“动物”=>null,
'Description'=>null,
'比索'=>空
];
如果(isset($value[0])){
$data['animal']=$value[0];
}
如果(isset($value[1])){
$data['Description']=$value[1];
}
如果(isset($value[2])){
$data['peso']=$value[2];
}
$response[]=$data;
}
回声';
打印(回复);
回声';
它确实有用


谢谢

您使用什么方法获取$array?请看完成。抱歉@AerialsIt可以在任何空单元格中添加空格字符,但我不知道这是否可行。您使用什么方法获取$array?请看完成。抱歉@AerialsIt可以在其行已经有数据的任何空单元格中添加空格字符,但我不知道这是否可行。谢谢。它返回的结果完全相同。不管怎么说,主要的一点是,谷歌正在删除一行中的所有内容,甚至是包含数据的单元格,因为这一行中只有一个空单元格。谢谢。它返回的结果完全相同。不管怎么说,主要的一点是,谷歌正在删除一行中的所有内容,甚至是包含数据的单元格,仅仅因为该行中有一个空单元格。