首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Google Sheets API复制整个电子表格

使用Google Sheets API复制整个电子表格
EN

Stack Overflow用户
提问于 2020-09-22 19:55:17
回答 1查看 260关注 0票数 0

我有一个电子表格与准备好的模板和一堆应用程序脚本代码来处理工作表。我需要使用Google Sheets API将数据导出到此模板中,但在同一电子表格中为所有用户做这件事并不是最好的主意。因此,我需要为每个用户创建一个新的电子表格。我设法创建了一个空的电子表格,从原始电子表格中复制了模板工作表,并将其插入到新的电子表格中,如下所示:

代码语言:javascript
运行
复制
    //Creating new Spreadsheet
    $service = new Google_Service_Sheets($client);
    $serviceDrive = new Google_Service_Drive($client);

    $spreadsheet = new Google_Service_Sheets_Spreadsheet([
        'properties' => [
            'title' => Lang::get('pls.export.spreadsheet_name'),
        ]
    ]);
    $spreadsheet = $service->spreadsheets->create($spreadsheet, [
        'fields' => 'spreadsheetId'
    ]);

    //Copying sheet from template
    $sourceSpreadsheet = 'spreadsheet id goes here';
    $soureSheet = 'sheet id goes here';
    $requestBody = new Google_Service_Sheets_CopySheetToAnotherSpreadsheetRequest(['destinationSpreadsheetId' => $spreadsheet->spreadsheetId]);
    $response = $service->spreadsheets_sheets->copyTo($sourceSpreadsheet, $soureSheet, $requestBody);

这是可行的,我也可以在里面写数据,但问题是,我不能复制Apps脚本代码。我也一直在寻找一种方法,以某种方式复制整个旧电子表格,并在那里导入数据,但找不到任何东西(不确定它是否有助于复制应用程序脚本代码)。是否可以使用Google Sheets API复制应用程序脚本代码并将其插入到新的电子表格中?或者我如何复制整个电子表格?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-24 17:45:14

我通过使用Google Drive API解决了这个问题,并从那里复制了文件:

代码语言:javascript
运行
复制
$serviceDrive = new Google_Service_Drive($client);
$drive = new Google_Service_Drive_DriveFile();
$spreadsheet = $serviceDrive->files->copy('your spreadsheet id', $drive);

然后将创建的文件分享给用户,如下所示:

代码语言:javascript
运行
复制
$this->insertPermission($serviceDrive, $spreadsheet->id, $user->email, 'user', 'writer');

就像一种护身符!

编辑:下面是insertPermission函数:

代码语言:javascript
运行
复制
function insertPermission($service, $fileId, $value, $type, $role)
{
    $newPermission = new Google_Service_Drive_Permission();
    $newPermission->setEmailAddress($value);
    $newPermission->setType($type);
    $newPermission->setRole($role);
    try {
        return $service->permissions->create($fileId, $newPermission);
    } catch (Exception $e) {
        print $e->getMessage();
    }
    return NULL;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64009228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档