嵌入了一系列可编辑的Google电子表格

问题描述 投票:3回答:1

我有一个谷歌电子表格,我给每个用户他们自己可以编辑的小范围(实际上只是他们自己的行)。现在我想使用iframe嵌入此工作表。如何嵌入一系列此可编辑电子表格?这一行显示了我想要的所需范围,但由于“pubhtml?”,它不可编辑:

SRC = “https://docs.google.com/spreadsheets/d/1mjKXUsDs9EfqV9WztdfmNLm-sZwhphTieqEoBEHWce4/pubhtml?gid=0&single=true&widget=true&headers=false&range=a1%3Ah5&widget=false&chrome=false&rm=minimal”

当我改变“pubhtml?”时“编辑?”,这些用户可以编辑它,但它会显示整个工作表,包括标题等:

SRC = “https://docs.google.com/spreadsheets/d/1mjKXUsDs9EfqV9WztdfmNLm-sZwhphTieqEoBEHWce4/edit?gid=0&single=true&widget=true&headers=false&range=a1%3Ah5&widget=false&chrome=false&rm=minimal”

我可以在嵌入的一些参数上找到很多(令人困惑的)信息,但没有找到这个问题的答案。还是不可能? (注意:我确实找到了两个类似的问题,但他们没有回答我的问题 - 或者我可能不理解答案?:-)

谢谢,Stef

google-sheets range embed edit
1个回答
0
投票

嵌入Google表格似乎不像人们希望的那样直观。但有些研究(请记住,谷歌是你的朋友,除非你的名字与Rump押韵),并且一些反复试验为你的问题提供了解决方案。

OP的计划是为每个用户提供访问他们自己的行以进行数据输入的权限。有几种方法可以想象这可以/将要完成。最明显的(对我来说)只是让用户访问主表上的“他们的行” - 例如,“用户A”可以访问第53行,“用户B”可以访问第17行,等等。这很容易做(我们将看到)但是用户还应该看到列标题是值得/重要的。例如,如果列标题位于第1行,则“用户A”需要访问第1行和第53行。问题!我们可以访问连续的行,但不能访问两个离散的范围。所以这种方法根本不可能 - 或者至少我找不到实现它的方法。

我采取的方法是从主表开始。然后为每个用户添加一个额外的工作表。例如,我们添加一个表“用户A”,“用户B”等。每个“用户表”只有两行数据。第1行包含列标题,第2行包含用户数据 - 这为我们提供了两个可供用户访问的连续行。母版纸中的单元格从包含手工输入/硬编码数据变为简单公式,这些公式链接到相应用户工作表上的相应列。

我不认为让每个用户访问他们自己的行是明智的(但是这可能是这样做的)。在我看来,各种安全隐患并不能证明风险是正确的。我强烈建议每个用户都应该拥有自己的工作表(即每个用户使用一个单独的文档)。然后,用户只能访问该表中有限数量的行,并且主表(它是一个单独的文件)包含拾取用户表中数据的公式(也是一个单独的文件)。通过这种方法,如果用户设法“搞砸”(无论何时/何时/但是 - 你知道它会发生),那么只有他们的工作表(以及到主人的链接)会受到影响。相比之下,这种方法会使整个主电子表格面临风险。

为了完整起见,我建议解决各种选择 - 听起来像是听起来很乏味。为了便于参考,我创建了一张Google表格(so_46059687)作为OP主表的替身。

不可编辑的嵌入 - (Version1) 在此示例中,可以看到但不能编辑主工作表。该文档包括两个“用户”表,但这些表不可见(通过选择)。

我发现Google论坛中的两个文档非常有用“Embed Sheet and remove Titles and Scrolling bars”和“How to I edit the height/width of a google sheets embed code when embedding it on my website?

Codepen example

<iframe width="100%" height="250" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vR-1keK8Wmyr4V6o6cjskLCetvsmbLeMsJuZViPpqkPck2-P2kCb4E4Ta_YMjbawz4lfgU_LVPFuqya/pubhtml?gid=0&amp;single=true&amp;widget=true&amp;headers=false"></iframe>

不可编辑的嵌入 - (Version2) 这是版本1主题的变体,只是其中一个用户工作表已可见。第二个用户工作表不可见(按选择)。

Codepen example

<iframe width="100%" height="250" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vR-1keK8Wmyr4V6o6cjskLCetvsmbLeMsJuZViPpqkPck2-P2kCb4E4Ta_YMjbawz4lfgU_LVPFuqya/pubhtml?widget=true&amp;headers=false"></iframe>

可编辑的嵌入 - (选项#1) 此方案显示了OP问题的解决方案。用户可以编辑其行的数据。有一个缺点 - 用户可以完全访问他们的工作表。他们可以使用链接到主工作表的行和列以外的行和列,他们可以添加工作表,但更糟糕的是,他们可以删除他们的工作表。

这两篇非常宝贵的文章解释了如何创建一个可编辑的嵌入:Google Docs: Embedding editable Google DocsHow to: Embed an editable Google Docs sheet

Codepen example

<iframe width="100%" height="400" src="https://docs.google.com/spreadsheets/d/1XqT5umvq2vzK7CEivVJXTJdKlBW07bP9nnMMWs2px_Y/edit?usp=sharing"></iframe>

有一些事情需要注意:

  1. 名为“Fred”的用户表一直是“Share [d]”。在这种情况下,我选择“有链接的任何人”,以便它在Codepen中工作,但实际上我会设置权限,以便只有被提名的人才能编辑工作表。
  2. mastersheet是挂锁的,这意味着它是可见的,但不可编辑。另一个选择是完全隐藏主表,但我选择了其他选项以展示对所有者开放的选项。
  3. 请注意,其他用户工作表(称为“Joe”)不可见(因为它尚未共享“)。
  4. 请注意,在用户工作表上编辑的任何内容(称为“Fred”)都会立即在master中更新(称为“Coy_Summary”)
  5. 如上所述,用户可以删除他们的工作表或添加额外的工作表。然而,这篇文章(和代码)“Google Spreadsheet Script To Insert And Delete Sheets with Protection”显然非常有效。我没有尝试过 - 我会把它留给别人。

可编辑的嵌入 - (选项#2) 这是我的建议如何运作的一个例子。每个用户(在本例中为“Brian”)都有自己的文件(工作表),主工作表使用“IMPORTRANGE”功能获取用户数据。另一个方面是用户仅限于两行(尽管没有限制对额外列的访问)。

请参阅Google sheet

文件“How to embed specific cells range when embedding a Google spreadsheet”是必读的。它详细解释了如何限制嵌入的范围。辉煌! “How to Share only Specific Sheet/Single Tab in Google Spreadsheet?”也很有价值。

Codepen example

<iframe width="250" height="75" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSzsA_yrb2uBCXywikOAbWrLnnEPYazevavza7PmtX9C6-xNw4p31gtCRBiCyxYkxVK7aMAWY1xZJ2o/pubhtml/sheet?headers=false&amp;gid=936292221&amp;range=A1:C2"></iframe>

顺便说一句,如果你看一下Codepen Option#1中的主表,你可以看到实际的“importrange”公式。

这是主表的B列中“Item#”的公式:

=importrange("https://docs.google.com/spreadsheets/d/1-HtjEawH7p45qKY5c0syIOnTF15endnG4L8wIIPEaAs/edit?usp=sharing", "Brian!b2:b2")
© www.soinside.com 2019 - 2024. All rights reserved.