Php 在用户输入值时在电子表格中追加行

Php 在用户输入值时在电子表格中追加行,php,google-sheets-api,Php,Google Sheets Api,我有一个字符串数组,需要根据数组的大小将其添加到电子表格中,从第一列到第n列 字符串可以表示多种类型的值,例如数字、日期等,因此必须在用户输入时将其放入表中以保留其含义 据我所知,GoogleAPI提供了两种附加值的方法,但似乎没有一种适合这种情况。以下是我遇到的问题: 使用 这个方法的问题是我找不到一种方法来设置用户输入的值。下面是一个代码示例: // Build the CellData array $values = array(); foreach( $ary_values

我有一个字符串数组,需要根据数组的大小将其添加到电子表格中,从第一列到第n列

字符串可以表示多种类型的值,例如数字、日期等,因此必须在用户输入时将其放入表中以保留其含义

据我所知,GoogleAPI提供了两种附加值的方法,但似乎没有一种适合这种情况。以下是我遇到的问题:

使用 这个方法的问题是我找不到一种方法来设置用户输入的值。下面是一个代码示例:

  // Build the CellData array
  $values = array();
  foreach( $ary_values AS $d ) {
    $cellData = new Google_Service_Sheets_CellData();
    $value = new Google_Service_Sheets_ExtendedValue();
    $value->setStringValue($d);
    $cellData->setUserEnteredValue($value);
    $values[] = $cellData;
  }
  // Build the RowData
  $rowData = new Google_Service_Sheets_RowData();
  $rowData->setValues($values);
  // Prepare the request
  $append_request = new Google_Service_Sheets_AppendCellsRequest();
  $append_request->setSheetId(0);
  $append_request->setRows($rowData);
  $append_request->setFields('userEnteredValue');
  // Set the request
  $request = new Google_Service_Sheets_Request();
  $request->setAppendCells($append_request);
(完整工作代码为)

即使使用,数据也被解释为字符串,因为必须使用(或其他支持的方法,即
setBoolValue
setFormulaValue
setNumberValue
)设置值

使用 使用这种方法,我可以将数据呈现为用户输入的数据,但在某些情况下,“附加”是在错误的位置完成的。如下列文件所述:

输入范围用于搜索 并在该范围内找到一个“表”。价值观将是 追加到表的下一行,从第一列开始 桌子的另一边

所以这个方法的行为方式和前一个不同,这就给我带来了问题

这是一段代码,可以实现我想要的功能:

  $body = new Google_Service_Sheets_ValueRange([
    'values' => [ $array_values ]
  ]);
  $params = [
    'valueInputOption' => 'USER_ENTERED'
  ];
  // the n-th column
  $end_column = chr( ord('A') + count($array_values));
  $result = $sheet_service->spreadsheets_values->append(
    $fileId,
    $sheetName . "!A1:" . $end_column . "1",
    $body,
    $params
  );
的确,它工作正常,但也有一些例外,例如:

  • 如果单元格
    A1
    为空,则
    append
    方法将把值从第2列开始(参见此以了解原因)
  • 如果我有一些写的行,然后是空行,然后是其他写的行,
    append
    方法将“填补空白”,而不是将值放在最后一个写的行之后

我犯了一些错误吗?有没有一种方法可以用一种或另一种方法来制作我想要的东西

重述:

  • 这些值必须视为用户输入的值(例如,数字或日期应解释为用户输入的值)
  • 值必须写入最后一个非空单元格后的行中,从第1列开始
  • 追加操作必须是原子操作(即,发送一个请求以获取最后一个非空单元格行,然后发送另一个请求以将数据写入其中,这不是一个选项,因为在此期间,另一个用户可以将数据放入其中)

欢迎任何意见

你必须使用谷歌电子表格api吗?我必须在PHPHA的谷歌电子表格中操作。如果你尝试了
setFormattedValues
?对查询的任何反馈都只会帮助你尝试使用
setFormattedValues
设置
CellData
的值。这些单元格似乎是空白的。