【问题标题】:Google Api create accessible by link SpeadSheetGoogle Api 创建可通过链接电子表格访问
【发布时间】:2023-03-06 08:47:01
【问题描述】:

我使用来自here 的脚本来创建电子表格,但它总是创建为封闭的。我需要创建可通过链接访问的电子表格,但我找不到方法。

我的意思是:

$spreadsheet = new Google_Service_Sheets_Spreadsheet([
            'properties' => [
                'title' => $title,
            ]
        ]);

(取自我之前提出的链接) 我创建了新的电子表格,我假设我需要做类似的事情

$spreadsheet = new Google_Service_Sheets_Spreadsheet([
            'properties' => [
                'title' => $title,
                'access' => 'by_link' //pseudo code
            ]
        ]);

怎么做?

【问题讨论】:

    标签: php google-sheets google-api google-sheets-api


    【解决方案1】:

    我相信你的目标如下。

    • it always creates as closed one. I need to create spread sheet that accessible by link,您想要检索创建的电子表格的 URL。
    • 在这种情况下,我认为您可能希望公开共享创建的电子表格。
    • 在您的脚本中,您希望通过 PHP 使用 googleapis 来实现您的目标。

    这样的话,下面修改的脚本怎么样?

    修改脚本:

    $service = new Google_Service_Sheets($client); // Please use your script here.
    
    $spreadsheet = new Google_Service_Sheets_Spreadsheet([
        'properties' => [
            'title' => $title,
        ]
    ]);
    $spreadsheet = $service->spreadsheets->create($spreadsheet, ['fields' => 'spreadsheetId']);
    
    // Here, you can see the URL of the created Spreadsheet.
    $url = "https://docs.google.com/spreadsheets/d/" . $spreadsheet->spreadsheetId . "/edit";
    printf("URL: %s\n", $url);
    
    // Below script publicly shares the created Spreadsheet.
    $drive = new Google_Service_Drive($client);
    $newPermission = new Google_Service_Drive_Permission();
    $newPermission->setType('anyone');
    $newPermission->setRole('reader');  // or writer
    $drive->permissions->create($spreadsheet->spreadsheetId, $newPermission);
    
    • 如果您不想公开分享创建的电子表格,请删除$drive = new Google_Service_Drive($client);下方的上述脚本。

    参考资料:

    【讨论】:

    • 当我尝试使用它时,我得到这个:``` { "error": { "errors": [ { "domain": "global", "reason": "insufficientPermissions", " message": "Insufficient Permission: 请求的身份验证范围不足。" } ], "code": 403, "message": "Insufficient Permission: Request has enough authentication scopes." } } ```
    • 我想我需要为我的客户更改范围
    • @Kemsikov 感谢您的回复。我带来的不便表示歉意。不幸的是,虽然我无法知道您的整个脚本,但从Request had insufficient authentication scopes. 的错误消息中,我担心您的范围无法使用 Drive API。如果是这样,例如,添加https://www.googleapis.com/auth/drive 的范围以使用Drive API 怎么样?顺便问一下,你现在用的是什么示波器?
    • @Kemsikov 比如$client->setScopes(array(Google_Service_Drive::DRIVE, Google_Service_Sheets::SPREADSHEETS));怎么样?在这种情况下,请删除包含访问令牌和刷新令牌的文件并重新授权范围。这样就可以检索到同时使用 Drive API 和 Sheets API 的访问令牌。
    • 非常感谢!我将驱动 api 添加到项目并更新了 api 密钥,现在它可以按预期工作了!
    猜你喜欢
    • 2017-01-23
    • 2015-08-18
    • 2011-10-23
    • 2017-09-18
    • 1970-01-01
    • 2011-02-24
    • 2013-05-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多