当最后一个范围为空值时,范围响应与范围请求不同

range response have difference with range request when last range have empty value

我尝试使用方法 spreadsheets.values.get 从 google sheet 获取数据。

sheet 表格

1 A B C
2 One Two Three
3 One Two
4 One Two Three

问题是在发出如下请求时:'range' => 'A2:C'、return 范围 3 上的值数据仅给出值 ['one', 'two'] 而不是 ['one', 'two', '']

任何解决方案或参考资料?

不幸的是,在当前阶段,当使用spreadsheets.values.get检索值时,您的情况被获取为默认情况。在您的示例电子表格中,它变为 [["One","Two","Three"],["One","Two"],["One","Two","Three"]]。所以在这种情况下,需要准备一个脚本来实现你的目标。在这个答案中,我想提出脚本。

示例脚本:

// Use spreadsheets.values.get. Please replace this for your actual script.
$res = $service->spreadsheets_values->get($spreadsheetId, $range);

// I added below script.
$values = $res['values'];
$maxLen = max(array_map(function ($v) { return count($v); }, $values));
foreach($values as $i => $v) {
    $len = count($v);
    if ($len < $maxLen) {
        $values[$i] = array_merge($v, array_fill(0, $maxLen - $len, ''));
    }
}
  • 本次修改,当行的长度小于数组的最大长度时,为行添加""

  • 当你的样本值被使用时,在这个修改中,$values$service->spreadsheets_values->get($spreadsheetId, $range) 检索到,它是 [["One","Two","Three"],["One","Two"],["One","Two","Three"]]。而且,当使用我的附加脚本时,$values 变为 [["One","Two","Three"],["One","Two",""],["One","Two","Three"]].

参考: