Ste*_*ert 6 embed edit range google-sheets
我有一个谷歌电子表格,我为每个用户提供了他们自己可以编辑的小范围(实际上只是他们自己的行)。现在我想使用 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"
我可以找到很多关于某些嵌入参数的(令人困惑的)信息,但没有找到这个问题的答案。或者说这是不可能的?(注意:我确实找到了两个类似的问题,但它们没有回答我的问题 - 或者也许我不明白答案?:-)
谢谢,斯蒂芬
嵌入 Google 表格似乎确实不如人们所希望的那么直观。但是一些研究(记住,谷歌是你的朋友,除非你的名字与臀部押韵)和一些尝试和错误已经为你的问题提供了解决方案。
OP 的计划是为每个用户提供对自己的数据输入行的访问权限。人们可以通过多种方式来实现这一目标。最明显的(对我来说)就是让用户访问主表上的“他们的行” - 例如,“用户 A”可以访问第 53 行,“用户 B”可以访问第 17 行,等等。这很容易做到(正如我们将看到的),但用户也应该看到列标题是值得/重要的。比如说,如果列标题位于第 1 行,则“用户 A”需要访问第 1 行和第 53 行。问题!我们可以访问连续的行,但不能访问两个离散的范围。所以这种方法根本不可能——或者至少我找不到一种方法来实现它。
我采取的方法是从母版开始。然后为每个用户添加一张额外的工作表。例如,我们添加一个工作表“用户A”、“用户B”等等。每个“用户表”只有两行数据。第 1 行包含列标题,第 2 行包含用户数据 - 这为我们提供了两个可供用户访问的连续行。主工作表中的单元格从包含手动输入/硬编码数据更改为链接到相应用户工作表上相应列的简单公式。
我不认为让每个用户访问自己的行是明智的(但是这是可以做到的)。在我看来,各种安全隐患并不能证明这种风险是合理的。我强烈建议每个用户应该有自己的工作表(即每个用户都有一个单独的文档)。然后,用户只能访问该工作表中有限数量的行,并且主工作表(这是一个单独的文件)包含拾取用户工作表(也是一个单独的文件)中的数据的公式。通过这种方法,如果用户设法“搞砸”(无论/何时/无论如何 - 但你只知道它会发生),那么只有他们的工作表(以及到母版的链接)受到影响。相比之下,这种方法会使整个主电子表格面临风险。
为了完整起见,我建议讨论各种选项 - 尽管听起来/可能令人眼花缭乱乏味)。为了便于参考,我创建了一个 Google 工作表 ( so_46059687 ) 作为 OP 主工作表的替代品。
不可编辑的嵌入 -(版本 1)
在此示例中,可以查看但不能编辑主表。该文档包括两个“用户”表,但这些表不可见(根据选择)。
我发现 Google 论坛中的两个文档非常有用“嵌入工作表并删除标题和滚动条”和“在将 Google 工作表嵌入代码嵌入我的网站时如何编辑其高度/宽度? ”
<iframe width="100%" height="250" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vR-1keK8Wmyr4V6o6cjskLCetvsmbLeMsJuZViPpqkPck2-P2kCb4E4Ta_YMjbawz4lfgU_LVPFuqya/pubhtml?gid=0&single=true&widget=true&headers=false"></iframe>
Run Code Online (Sandbox Code Playgroud)
不可编辑的嵌入 -(版本 2)
这是版本 1 主题的变体,只不过其中一个用户表已变得可见。第二个用户表不可见(根据选择)。
<iframe width="100%" height="250" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vR-1keK8Wmyr4V6o6cjskLCetvsmbLeMsJuZViPpqkPck2-P2kCb4E4Ta_YMjbawz4lfgU_LVPFuqya/pubhtml?widget=true&headers=false"></iframe>
Run Code Online (Sandbox Code Playgroud)
可编辑嵌入 - (选项#1)
此场景显示了OP问题的解决方案。用户可以编辑其行的数据。有一个缺点 - 用户可以完全访问他们的工作表。他们可以使用链接到主工作表之外的行和列,他们可以添加工作表,但更糟糕的是,他们可以删除他们的工作表。
这两篇宝贵的文章解释了如何创建可编辑的嵌入:Google 文档:嵌入可编辑的 Google 文档和如何:嵌入可编辑的 Google 文档表。
<iframe width="100%" height="400" src="https://docs.google.com/spreadsheets/d/1XqT5umvq2vzK7CEivVJXTJdKlBW07bP9nnMMWs2px_Y/edit?usp=sharing"></iframe>
Run Code Online (Sandbox Code Playgroud)
有一些事情需要注意:
可编辑嵌入 - (选项#2)
这是我的建议如何发挥作用的示例。每个用户(在本例中为“Brian”)都有自己的文件(工作表),主工作表通过“IMPORTRANGE”功能获取用户数据。另一方面是用户仅限于两行(尽管没有任何限制对额外列的访问)。
参考谷歌表
文档“如何在嵌入 Google 电子表格时嵌入特定单元格范围”是必读的内容。它详细解释了如何限制嵌入的范围。杰出的!“如何在 Google 电子表格中仅共享特定工作表/单个选项卡? ”也很有价值。
<iframe width="250" height="75" src="https://docs.google.com/spreadsheets/d/e/2PACX-1vSzsA_yrb2uBCXywikOAbWrLnnEPYazevavza7PmtX9C6-xNw4p31gtCRBiCyxYkxVK7aMAWY1xZJ2o/pubhtml/sheet?headers=false&gid=936292221&range=A1:C2"></iframe>
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您查看 Codepen Option#1 中的主表,您可以看到实际的“importrange”公式。
这是主表 B 列中“项目编号”的公式:
=importrange("https://docs.google.com/spreadsheets/d/1-HtjEawH7p45qKY5c0syIOnTF15endnG4L8wIIPEaAs/edit?usp=sharing", "Brian!b2:b2")
Run Code Online (Sandbox Code Playgroud)