php สร้าง Google ชีตจากบัญชีบริการ

ฉันใช้บัญชีบริการเพื่ออ่านและอัปเดต Google ชีตที่มีอยู่ซึ่งแชร์กับบัญชีบริการ


ตอนนี้ฉันต้องการสร้าง Google ชีตใหม่โดยใช้บัญชีบริการ และ จากนั้นแชร์กับผู้ใช้ด้วยที่อยู่อีเมล หรืออย่างน้อยก็ให้ลิงก์ที่ผู้ใช้สามารถเปิดได้


ตัวอย่างทั้งหมดที่ฉันพบดูเหมือนจะต้องการให้ผู้ใช้ได้รับอนุญาต ไม่ใช่ทุกอย่างเพื่อ ทำได้โดยใช้บัญชีบริการ


Answer

วิธีแก้ไข:

ฉันเชื่อว่าเป้าหมายของคุณมีดังนี้



  • คุณต้องการสร้างสเปรดชีต Google ใหม่และใช้ร่วมกับที่อยู่อีเมล

  • คุณต้องการทำให้สำเร็จโดยใช้ PHP


แม้ว่า โชคไม่ดีที่ฉัน\ ไม่แน่ใจเกี่ยวกับสคริปต์ปัจจุบันของคุณจากคำถามของคุณ เมื่อคุณต้องการบรรลุสิ่งนี้โดยใช้ googleapis สำหรับ php สคริปต์ตัวอย่างต่อไปนี้เป็นอย่างไร


สคริปต์ตัวอย่าง:


$client = ###; // Please use your client from the service account.

$name = "sampe Spreadsheet name"; // Please set Spreasdheet name.
$email = "###"; // Please set email address you want to share.

$service = new Google_Service_Drive($client);

// 1. Create a new Spreadsheet.
$mimeType = "application/vnd.google-apps.spreadsheet";
$f = new Google_Service_Drive_DriveFile();
$f->setName($name);
$f->setMimeType($mimeType);
// $f->setParents(["###folderId###"]); // If you want to put the created Spreadsheet to the specific folder, please use this.
$spreadsheet = $service->files->create($f);
$spreadsheet_id = $spreadsheet->getId();

// 2. Share the created Spreadsheet with an email address.
$permission = new Google_Service_Drive_Permission();
$permission->setEmailAddress($email);
$permission->setType(\'user\');
$permission->setRole(\'writer\');
$service->permissions->create($spreadsheet_id, $permission);

// 3. Show URL of created Spreadsheet.
$spreadsheet_url = "https://docs.google.com/spreadsheets/d/" . $spreadsheet_id . "/edit";
print($spreadsheet_url);


  • เมื่อเรียกใช้สคริปต์นี้ จะมีการสร้างสเปรดชีตของ Google ใหม่ไปยังโฟลเดอร์รูท และสเปรดชีตที่สร้างขึ้นจะถูกแชร์กับที่อยู่อีเมลในรูปแบบ ตัวเขียน



  • ในกรณีนี้ ใช้ขอบเขตของ Google_Service_Drive::DRIVE เป็นตัวอย่าง




ข้อมูลอ้างอิง:



Source