Php 如何批量更新添加数字而不是字符串/撇号的Google工作表

Php 如何批量更新添加数字而不是字符串/撇号的Google工作表,php,google-sheets-api,Php,Google Sheets Api,我花时间开发了一个解决方案,将数据添加到Google工作表中。我正在使用PHP库,一切正常 我有一个很好用的函数。我可以在需要时附加数据。功能是: function addRowToSpreadsheet($sheetsService, $spreadsheetId, $sheetId, $newValues = []) { // Build the CellData array $values = []; foreach ($newValues AS $d) {

我花时间开发了一个解决方案,将数据添加到Google工作表中。我正在使用PHP库,一切正常

我有一个很好用的函数。我可以在需要时附加数据。功能是:

    function addRowToSpreadsheet($sheetsService, $spreadsheetId, $sheetId, $newValues = []) {
    // Build the CellData array
    $values = [];
    foreach ($newValues 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($sheetId);
    $append_request->setRows($rowData);
    $append_request->setFields('userEnteredValue');
    // Set the request
    $request = new Google_Service_Sheets_Request();
    $request->setAppendCells($append_request);
    // Add the request to the requests array
    $requests = array();
    $requests[] = $request;
    // Prepare the update
    $batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
        'requests' => $requests
    ));

    try {
        // Execute the request
        $response = $sheetsService->spreadsheets->batchUpdate($spreadsheetId, $batchUpdateRequest);
        if ($response->valid()) {            
            return true;// Success, the row has been added
        }
    } catch (Exception $e) {        
        error_log($e->getMessage());// Something went wrong
    }

    return false;
}
问题是:如果我通过以下数组发送:

('Joe', 'Schmo', 23)
插入的内容是:

乔·什莫23

我怎样才能发送这些数据而不让数字被撇号。我想要的是:

乔·什莫23

--根据答案更新:

如果我这样设置数组:

        $values = array('25000.00','test', intval(2));
我试图通过按下intval()来强制该类型。问题在于,这会触发以下错误:

Google_Service_Exception in REST.php line 118:
{
"error": {
"code": 400,
"message": "Invalid value at 'requests[0].append_cells.rows.values[2].user_entered_value.string_value' (TYPE_STRING), 2",
"errors": [
{
"message": "Invalid value at 'requests[0].append_cells.rows.values[2].user_entered_value.string_value' (TYPE_STRING), 2",
"domain": "global",
"reason": "badRequest"
}
],
"status": "INVALID_ARGUMENT"
}
}
谢谢

在excel中,23是一个字符串(字符),23是一个数字。需要转换数组元素


查看:

经过大量的评论、谷歌搜索和其他废话。我已经解决了这个问题。问题很简单。这段代码在其中循环值:

foreach ($newValues AS $d) {
    $cellData = new Google_Service_Sheets_CellData();
    $value = new Google_Service_Sheets_ExtendedValue();
    $value->setStringValue($d);
    $cellData->setUserEnteredValue($value);
    $values[] = $cellData;
}
需要一个小的更新:

foreach ($newValues AS $d) {
        $cellData = new Google_Service_Sheets_CellData();
        $value = new Google_Service_Sheets_ExtendedValue();
        if(is_numeric($d)){
            $value->setNumberValue($d);
        } else {
            $value->setStringValue($d);
        }           
        $cellData->setUserEnteredValue($value);
        $values[] = $cellData;
    }
问题是PHP库已经支持这一点,但文档记录得很差。我不得不深入图书馆

输入:vendor/google/apiclient services/src/google/Service/Datastore/Value.php


还有其他函数可以处理其他类型的数据。我只需要运行一个if/else或case。

我更新了OP。我理解这个答案背后的理论,但不确定如何实现它。我尝试将数组项转换为整数,但这并没有解决问题。考虑到我对PHP一无所知,您做得很好。谢谢你的文档链接。