【问题标题】:Is there a way to enlarge an image on mouse click in Google Sheets?有没有办法在谷歌表格中点击鼠标放大图像?
【发布时间】:2015-09-22 08:01:50
【问题描述】:

我基本上在表格中有一些小图像,我想通过鼠标点击放大。我希望放大的图像出现在页面的中心。再次单击鼠标以删除放大的图像。我可以使用我找到的 VB 脚本在 Excel 上执行此操作,但在 Google 表格中没有运气。有没有办法将这种脚本分配给每个图像?

类似于这个http://imgur.com/ETyflIS

亲切的问候,

亚历克斯

【问题讨论】:

  • 如果图像带有公式,则可以使用自定义菜单中的自定义侧边栏或对话框从选择中获取图像。不可能有任何其他方式在同一个工作表窗口上获取缩放图像。
  • 非常令人失望的是没有对此进行本机处理。图像太小而无法使用,或者行太大而无法阅读。

标签: google-apps-script google-sheets google-spreadsheet-api


【解决方案1】:

您可以使用 google chrome 插件: Docs Image Zoomer

在这里测试:Example

【讨论】:

  • 太棒了!但是,请更新示例页面!此插件在我的文档编辑模式下工作,但在您的示例页面中不起作用。
  • 是的,因为插件只能在编辑模式下工作。在我的示例文件中是只读的,这就是你面临这个问题的原因。
【解决方案2】:

您可以将脚本分配给图像,但是(我可以看到)脚本无法确定单击了哪个图像。该脚本也可以插入一个新图像,但这个图像不会分配一个脚本,所以我们不能让它在点击时消失。

我想您可以分配一个脚本,使用 HTML 服务打开图像,如下所示:

Enlarge Picture on Click

但是您需要为每个图像创建一个单独的函数,以便它可以将源代码加载到 HTML 中,或者以某种方式确定单击了哪个图像(我会考虑一下,但我认为这不可能完成)。

编辑: 脚本如下。第一个图像应该运行 popUp1,第二个图像应该运行 popUp2。可能有一个更优雅的解决方案来为 HTML 提供不同的图像 URL,但这是可行的。

code.gs

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Actions')
  .addItem('Authorise', 'Auth')
  .addToUi();
}

function Auth() {
  SpreadsheetApp.getActiveSpreadsheet();
}


function popUp1() {
  var html = HtmlService.createHtmlOutputFromFile('index1')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  html.setHeight(400);
  html.setWidth(600);
  SpreadsheetApp.getUi()
      .showModalDialog(html, 'Image');
}

function popUp2() {
  var html = HtmlService.createHtmlOutputFromFile('index2')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  html.setHeight(400);
  html.setWidth(600);
  SpreadsheetApp.getUi()
      .showModalDialog(html, 'Image');
}

index1.html

<form>
  <div id="closeDiv"><font face="arial" size="1">Click the image to close...</font></div>
  <img src="http://www.hdwallpapersimages.com/wp-content/uploads/2014/01/Winter-Tiger-Wild-Cat-Images-540x303.jpg" alt="DJ BBQ" style="width:540px;height:303px;" onClick="closeImage()">
</form>

<script type="text/javascript">
  function closeImage() {
    google.script.host.close();
  }
</script>

index2.html

<form>
  <div id="closeDiv"><font face="arial" size="1">Click the image to close...</font></div>
  <img src="http://www.keenthemes.com/preview/metronic/theme/assets/global/plugins/jcrop/demos/demo_files/image1.jpg" alt="DJ BBQ" style="width:540px;height:303px;" onClick="closeImage()">
</form>

<script type="text/javascript">
  function closeImage() {
    google.script.host.close();
  }
</script>

【讨论】:

  • @Itsuki Productions 有权限问题。如果您已登录 Google 帐户,您应该会在顶部看到“操作”菜单。运行“授权”,然后单击图像,它应该可以工作。
  • 是的,有没有办法绕过权限?我无法告诉所有人授权并登录他们的 Google 帐户 D:
  • 不幸的是,某些 API 需要授权,并且此脚本使用 SpreadsheetApp API。他们只需要授权一次,但他们需要登录才能工作。我现在想不出解决办法,但如果我想到了,我会告诉你的。
  • 除非每个人都能够编辑电子表格,否则他们实际上看不到“操作”>“授权”选项。所以普通观众,即使登录也无法授权。有没有办法解决这个问题?
  • 我相信人们需要编辑权限才能使其工作。一种解决方法是在工作表上提供保护,但在未受保护的列中提供可点击的图像。作为示例,我在上面的表格中进行了这些更改。如果这对您的情况不可行,我可能没有想法。权限和授权使某些事情难以保护我们免受恶意脚本的侵害。
【解决方案3】:

不确定这是否是您正在寻找的内容,也不确定您是否找到了其他解决方案,但如果您要插入/绘图,您可以将您的全尺寸图像粘贴到那里,插入它,然后在单元格中调整它的大小。 如果双击图像,将弹出全尺寸图。 但是,这仅适用于编辑器。不是观众也不是评论者。 此外,您必须单击保存并关闭才能返回。 ESC 和单击外部都不会关闭绘图编辑器。

示例:https://docs.google.com/spreadsheets/d/1KDcRQngFy1zRUrD6v2FYH-YPBivZGiUlSKt_PhjeZqU/edit#gid=0

希望对您有所帮助。

恩里克

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-10
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多