etu*_*rdu 5 php google-sheets-api
我有一个字符串数组,我需要根据数组的大小将其附加到电子表格中,从第一列到第n列.
字符串可以表示几种类型的值,例如数字,日期等,因此必须在用户输入时将它们放在工作表中以保持其含义.
据我所知,Google API提供了两种附加值的方法,但它们似乎都不适合这种情况.这是我遇到的问题:
这种方法的问题是我无法找到一种方法来设置用户输入的值.这是一个代码示例:
  // 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);
Run Code Online (Sandbox Code Playgroud)
(完整的工作代码在这里)
即使使用CellData.setUserEnteredValue时,数据被解释为字符串,因为一个具有使用设置值ExtendedValue.setStringValue(或其他支持的方法,即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
  );
Run Code Online (Sandbox Code Playgroud)
实际上,它工作正常,但有一些例外,例如:
A1为空,则该append方法将从第2列开始放置值(请参阅此示例以了解原因).append方法将"填补空白",而不是将值放在最后写入的行之后.我做错了吗?有没有办法用一种或另一种方法制作我想要的东西?
回顾一下:
欢迎任何建议!
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           416 次  |  
        
|   最近记录:  |