Php Google sheets API范围问题

Php Google sheets API范围问题,php,google-sheets-api,Php,Google Sheets Api,我有一张这样的谷歌表格。这些值目前只是我的标题的占位符 当我用$range='Sheet运行我的PHP脚本时!F2:L2′;要通过API/服务帐户将记录插入google工作表,我只想开始在F行插入所有尝试,它在第一次尝试时插入很好,但随后插入到第3行及以后的所有插入都会插入从第1/A列开始的数据? 只有当我将范围设置为F3:L3并将第2行留空时,它才会同时插入到正确的列中 代码: require'/var/www/html/app/vendor/autoload.php'; $client

我有一张这样的谷歌表格。这些值目前只是我的标题的占位符

当我用$range='Sheet运行我的PHP脚本时!F2:L2′;要通过API/服务帐户将记录插入google工作表,我只想开始在F行插入所有尝试,它在第一次尝试时插入很好,但随后插入到第3行及以后的所有插入都会插入从第1/A列开始的数据?

只有当我将范围设置为F3:L3并将第2行留空时,它才会同时插入到正确的列中

代码:

require'/var/www/html/app/vendor/autoload.php';
$client=new\Google_client();
$client->setApplicationName(“我的PHP应用程序”);
$client->setScopes([\Google\u Service\u Sheets::SPREADSHEETS]);
$client->setAccessType('offline');
$client->setAuthConfig('/var/www/html/clients-api/credentials.json');
$sheets=new\Google\u Service\u sheets($client);
$spreadsheetId='1bo123c1UtdWKV25_312znDO123dDp631238D5qN1123lQ';
$range='Sheet1!F2:L2′;
$values=[
[$data->FirstName,$data->LastName,$data->ID,“,”,$data->PrimaryNumber,$data->PrimaryEmail]
];
$body=新Google\u服务\u表单\u值范围([
“范围”=>$range,
“值”=>$values
]);
$params=[
'insertDataOption'=>'INSERT_ROWS',
“valueInputOption”=>“原始”
];
$result=$sheets->spreadsheets\u values->append($spreadsheetId,$range,$body,$params);
回显“”,变量导出($result,true),“”,“\n”;
问题: 如你所见:

输入范围用于搜索现有数据并在该范围内查找“表”

数据将相应地附加在此“表”之后,从其第一列开始

在这种情况下,第一次追加数据时,
F2:L2
不属于任何现有表,因为所有这些单元格都是空的

在连续的时间里,情况并非如此,因为没有空白单元格将已填充的
F2:L2
A1:L1
分隔开,因此将其视为包含第一行标题的表的一部分。然后,当尝试向
F3:L3
添加数据时,找到的表对应于
A1:L2
。因此,它将从A列开始追加数据,因为表从A列开始

您可以通过检查中的
tableRange
来检查这种情况。在您的情况下,当尝试附加
F3:L3
时,它将类似于
“tableRange”:“Sheet1!A1:L2”

解决:
  • 一个选项是,在追加
    F2:L2
    时,使输入范围从一开始就引用第1行(例如
    A1
    ),并在数组的开头添加空值
  • 另一种选择是每次更新输入范围,以指定不属于“表”的范围(即依次
    F2:L2
    F3:L3
    F4:L4
    ,等等)
参考:

请分享一些代码。根据要求添加代码
require '/var/www/html/app/vendor/autoload.php';
$client = new \Google_Client();
$client->setApplicationName('My PHP App');
$client->setScopes([\Google_Service_Sheets::SPREADSHEETS]);
$client->setAccessType('offline');
$client->setAuthConfig('/var/www/html/clients-api/credentials.json');
$sheets = new \Google_Service_Sheets($client);
$spreadsheetId = '1bo123c1UtdWKV25_312znDO123dDp631238D5qN1123lQ';
$range = 'Sheet1!F2:L2';
$values = [
    [$data->FirstName,$data->LastName,$data->ID,"","",$data->PrimaryNumber,$data->PrimaryEmail]
];
$body = new Google_Service_Sheets_ValueRange([
    'range' => $range,
    'values' => $values
]);
$params = [
    'insertDataOption' => 'INSERT_ROWS',
    'valueInputOption' => "RAW"
];
$result = $sheets->spreadsheets_values->append($spreadsheetId, $range, $body, $params);

echo '<pre>', var_export($result, true), '</pre>', "\n";
$range = 'Sheet1!A1';
$values = [
    ["","","","","",$data->FirstName,$data->LastName,$data->ID,"","",$data->PrimaryNumber,$data->PrimaryEmail]
];