ฝัง Google Spreadsheet ใน Google Document


82

เป็นไปได้หรือไม่ที่จะฝัง Google Spreadsheet ลงใน Google Document à la Microsoft Excel และ Microsoft Word แล้วแผนภูมิจากสเปรดชีตล่ะ


1
คุณสามารถคัดลอกและวางแผนภูมิจากสเปรดชีตของคุณลงในเอกสาร ไม่มีโชคในการพยายามฝังสเปรดชีตด้วยตนเอง ฉันส่งสิ่งนี้เป็นคำขอคุณลักษณะใน Google Group เพื่อรับเอกสาร
mikeschuld

คำตอบ:


24

ตั้งแต่วันนี้ (2016-05-20) เมื่อวันที่ Google เริ่มที่จะแผ่ความสามารถในการฝังแผนภูมิจากสเปรดชีตของ Google ลงในเอกสารของ Google ณ จุดนี้บัญชี Google สองในสามของฉันมีตัวเลือกให้ใช้งานในInsertเมนูโดยมีInsert→Chartเมนูย่อยใหม่ใต้Insert→Drawing…รายการ

เมื่อคุณแทรกแผนภูมิดังกล่าวแผนภูมิเหล่านั้นจะยังคงเชื่อมโยงกับสเปรดชีตดั้งเดิม หากสิ่งที่คุณต้องการคือข้อมูลแบบตารางมีประเภทแผนภูมิตารางที่คุณสามารถใช้เพื่อนำเสนอข้อมูลของคุณเป็นตารางแบบง่าย

มีข้อ จำกัด บางประการในขั้นตอนนี้ (เช่นเกี่ยวกับขนาดของแผนภูมิ) และแผนภูมิจะต้องมีอยู่ในสเปรดชีตก่อนที่คุณจะสามารถแทรกได้ แต่สิ่งนี้จะไปในทิศทางที่ถูกต้อง ...


ในการแทรกสเปรดชีตหรือตารางให้ใช้เพิ่มตารางจาก Google ชีตโดยการคัดลอกวางจากชีตไปยังเอกสารและเลือกตัวเลือกที่เชื่อมโยง

แผนภูมิจะไม่ได้รับการอัปเดตหากคุณแก้ไขสเปรดชีตต้นทางในขณะที่เปิดเอกสารอย่างไรก็ตามเอกสารจะตรวจจับการเปลี่ยนแปลงและให้ปุ่มอัปเดตเหนือสเปรดชีตแบบฝังเพื่อสะท้อนการเปลี่ยนแปลงล่าสุดในแหล่งที่มา


นี่หมายความว่าหากสเปรดชีตใช้สูตรหรือสมการที่เปลี่ยนแปลงโดยอัตโนมัติ (เช่นตามวันที่กำหนด) มันจะไม่อัปเดตด้วยหรือ
Erik Humphrey

ฉันยังไม่ได้ทดสอบสิ่งนี้ แต่ฉันสงสัยว่าคุณต้องเปิดสเปรดชีตของคุณเพื่อรีเฟรชแผนภูมิของคุณแล้วยอมรับเพื่ออัปเดตแผนภูมิในเอกสารที่ฝังไว้ หากคุณพบเป็นอย่างอื่นแจ้งให้เราทุกคนทราบ
Jean-Rene Bouvier

1
เริ่มตั้งแต่วันนี้เราสามารถฝังตารางได้เช่นกัน เนื่องจากคำตอบของคุณเป็นคำตอบที่ยอมรับได้คุณอาจต้องการแก้ไขในคุณสมบัติใหม่นี้

1
ขอบคุณสำหรับข้อมูลอีกครั้ง ฝังตารางโดยตรง ในขั้นตอนนี้ดูเหมือนว่าคุณสมบัติจะยังไม่ทำงานในบัญชี Google Apps for work ของฉัน ฉันจะอัปเดตโพสต์ทันทีที่แจ้งให้ทราบ
Jean-Rene Bouvier

@ มิเชลฉันลองแล้วดูเหมือนจะเป็นไปไม่ได้ ฉันไม่เห็นปุ่ม "อัปเดต" ใด ๆ บนตารางที่คัดลอกมาจากไฟล์ชีต
ADTC

32

AFAIK คุณสามารถคัดลอกและวางจากสเปรดชีตไปยังเอกสารข้อความได้เท่านั้น สเปรดชีตถูกแทรกเป็นตาราง แต่ไม่ได้เชื่อมโยง: หากคุณเปลี่ยนบางสิ่งในสเปรดชีตมันจะไม่ปรากฏในเอกสารข้อความ

แน่นอนฉันชอบที่จะพิสูจน์ว่าผิด!


1
น่าเศร้าที่ปรากฏตัวเลือกเดียวของฉัน ณ จุดนี้
เบียร์

1
ดูคำตอบของฉันด้านล่างตอนนี้มีตัวเลือกใหม่ที่ทำให้เป็นมิตรขึ้นเล็กน้อยและมีการปรับปรุงแบบไดนามิก
Jean-Rene Bouvier

11

นี่คือโซลูชันที่อิงกับสคริปต์ซึ่งอนุญาตให้หนึ่งแทรกตารางที่มีเนื้อหาจากช่วงที่กำหนดภายในสเปรดชีตที่กำหนด ฉันไม่ได้พยายามหาวิธีในการซิงค์ข้อมูลแบบเรียลไทม์เนื่องจากดูเหมือนว่าไม่สามารถใช้งานได้จริงเนื่องจากมีข้อมูลจำนวนมากที่อาจต้องถูกถ่ายโอนพร้อมการแก้ไขทุกครั้งในสเปรดชีต สคริปต์จะเพิ่มรายการเมนูแบบกำหนดเอง "update data" ลงในเอกสารแทน

สคริปต์ควรเชื่อมโยงกับเอกสาร (เช่นสร้างโดยใช้เครื่องมือ> เครื่องมือแก้ไขสคริปต์ในเมนูเอกสาร) URL สเปรดชีตรวมถึงชีตและช่วงที่ใช้จะถูกระบุไว้ในสคริปต์ การฝังข้อมูลทั้งหมดบนแผ่นแทนที่ด้วย.getRange(rangeName).getDataRange()

เมื่อมีการดำเนินการฟังก์ชั่น updateData ครั้งแรกมันจะผนวกตารางท้ายเอกสาร ในการรันครั้งต่อไปมันจะอัพเดตตารางในตำแหน่ง (เช่นหากมีการเพิ่มข้อความเพิ่มเติมหลังตารางคำสั่งจะถูกเก็บไว้)

โปรดทราบว่าการตัดการวางตารางจะทำให้กระบวนการอัปเดต (สคริปต์จะเพิ่มตารางใหม่ในตอนท้าย) เนื่องจากสำเนาที่วางเป็นวัตถุใหม่ ให้วางข้อความรอบ ๆ ตารางแทน

function onOpen() {
  DocumentApp.getUi()
             .createMenu('Custom')
             .addItem('Update Data', 'updateData')
             .addToUi();
}

function updateData() {
  var ssUrl = ' spreadsheet url here ';
  var sheetName = 'Sheet2';   // name of sheet to use
  var rangeName = 'A1:C3';    // range of values to include 

  var values = SpreadsheetApp.openByUrl(ssUrl)
                             .getSheetByName(sheetName)
                             .getRange(rangeName)
                             .getValues();
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody();
  var ranges = doc.getNamedRanges('embeddedSheet-range');
  if (ranges.length == 0) {
    var table = body.appendTable(values);
  }
  else {
    tableRange = ranges[0];
    table = tableRange.getRange().getRangeElements()[0].getElement();
    var ind = body.getChildIndex(table);
    tableRange.remove();
    body.removeChild(table);
    table = body.insertTable(ind, values);
  }
  var rangeBuilder = doc.newRange();
  rangeBuilder.addElement(table);
  doc.addNamedRange('embeddedSheet-range', rangeBuilder.build());
}

บันทึกทางเทคนิค

  1. นอกจากนี้ยังเป็นไปได้ที่จะซิงค์ข้อมูลทุกชั่วโมงนอกเหนือไปจากด้วยตนเอง เพียงเพิ่มทริกเกอร์ตามเวลาจากเมนูทรัพยากรของตัวแก้ไขสคริปต์เพื่อที่จะเรียกใช้ฟังก์ชัน updateData

  2. ท่านสามารถปรับสคริปต์นี้เพื่อผูกกับสเปรดชีตแหล่งที่มาแทน สิ่งนี้จะต้องมีการเปลี่ยนแปลงวิธีการเปิดเอกสาร (เช่นตาม URL) แต่ไม่เช่นนั้นตรรกะจะเหมือนกัน

  3. ส่วนที่ยุ่งยากของสคริปต์กำลังได้รับหมายเลขอ้างอิงของตารางที่มีอยู่ในเอกสาร ต้องมีการวางไว้ในช่วงของชื่อ นอกจากนี้ยังเป็นการสมควรที่จะแทนที่องค์ประกอบของตารางอย่างสมบูรณ์มากกว่าที่จะยุ่งกับรายการของตารางที่มีอยู่ เนื่องจาก Named Range นั้นไม่เปลี่ยนรูปก็จะถูกลบออกด้วยตารางที่มีและจากนั้นสร้างขึ้นอีกครั้งพร้อมกับตารางใหม่


ใช้งานได้ดี มีวิธีใดในการจัดรูปแบบ (เฉพาะสีพื้นหลังของเซลล์)?
cheshirekow

หมายเหตุ: 'URL สเปรดชีต' ควรมี URL แบบเต็มรวมถึง/edit#gid=0เนื้อหาในตอนท้าย
cheshirekow

ไม่มีวิธีนำเข้าการจัดรูปแบบของสเปรดชีตอื่น

ลิงก์ยังไม่ได้ทำการโอนถ่ายและไม่มีสี มีวิธีการแก้ไขสคริปต์นี้เพื่อรวมการจัดรูปแบบทั้งหมดหรือไม่ ฉลาดมากในการแก้ปัญหาการตัดแปะทำงานเหมือนมีเสน่ห์!
unc0nnected

4

ใช่คุณสามารถ. คัดลอกเนื้อหาของชีตและวางลงในเอกสารของคุณที่มุมด้านขวามันจะถามว่าคุณต้องการเชื่อมโยงไปยังสเปรดชีตหรือไม่ หากคุณทำหลังจากแก้ไขสเปรดชีตแล้วคุณสามารถคลิกไอคอนอัปเดตในเอกสารของคุณเพื่อรวมการเปลี่ยนแปลงในเอกสารของคุณ


ตั้งแต่ต้นปี 2561 นี่เป็นคำตอบที่ดีที่สุดสำหรับคำถามที่เกี่ยวข้องกับการแทรกตาราง Google ชีตลงใน Google Doc
dlukes

และเท่าที่ฉันสามารถบอกได้เหตุผลที่ฉันพบหัวข้อนี้คือมัน จำกัด อยู่ที่ 400 เซลล์
Trey

3

อีกทางเลือกหนึ่งคือการใช้ Google Sites หรือโปรแกรมแก้ไขเนื้อหาอื่น ๆ ที่อนุญาตให้ฝังเนื้อหา iframes

เพื่อฝัง Google สเปรดชีตในหน้าของ Google Sites

  1. สร้างไซต์ใหม่หรือไปที่ไซต์ที่มีอยู่
  2. สร้างหน้าใหม่หรือคลิกที่แก้ไขในหน้าปัจจุบัน
  3. คลิกที่แทรก> ไดรฟ์> สเปรดชีต
  4. เลือกสเปรดชีต
  5. ตั้งค่าตัวเลือก
  6. คลิกที่บันทึก
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.