【问题标题】:How to Label A Drawing in Google Sheets to Reference with Google Script如何在 Google 表格中标记绘图以使用 Google 脚本进行参考
【发布时间】:2021-10-23 21:15:01
【问题描述】:

我正在尝试为我在 Google 表格文档中创建的绘图提供标题/标签“NewGrp”,以便我可以在 Google Apps 脚本中引用该绘图。在 Excel 中,您只需转到已命名的范围框并为绘图命名。

在 Google 表格中,我可以使用“插入”->“绘图”插入绘图,但它不允许我为绘图命名。

我还可以在 Google 绘图中创建一个绘图并将其命名为“NewGrp”,但是我无法将此绘图插入到 Google 表格中。 (与 Google Docs 不同,Google 表格不允许您插入来自 Google Drive 的绘图)。

如何在 Google 表格中命名绘图,以便在 Google Apps 脚本中引用它?

谢谢 金

【问题讨论】:

    标签: google-apps-script drawing named-ranges


    【解决方案1】:

    我不确定是否有其他方法,但我过去处理绘图的方法是检查与它们相关联的功能。

    如果您只需要一个标签,您应该能够假装按钮正在调用“标签”函数,而该函数不做任何事情。这是一个重置按钮位置的脚本。

    一个例子:

    function phaseTwoButtonPositions(){
      var drawings  = os.getDrawings();
      for (var i=0; i<drawings.length;i++)
        {
        var drawing = drawings[i];
        console.log("L208:%s",drawing.getOnAction(), drawing.getContainerInfo().getAnchorColumn());
        if (drawing.getOnAction() == "doThisThing") drawing.setPosition(8, 40,0,0);
        if (drawing.getOnAction() == "doThatThing") drawing.setPosition(8, 2,0,0);
        if (drawing.getOnAction() == "doAnotherThing") drawing.setPosition(11, 2,0,0);
    
        }
    }
    

    编辑:这更适合您的情况。你必须浏览所有的图纸,检查它们的动作是否匹配,并相应地设置它们。这会根据复选框的状态将非活动组移出屏幕(超过 40 列)

    function phaseTwoButtonPositions(){
      var drawings  = os.getDrawings();
      var checkbox = os.getRange("A1").getValue();//TRUE OR FALSE
      for (var i=0; i<drawings.length;i++)
        {
        var drawing = drawings[i];
        if (checkbox && drawing.getOnAction() == "group1") drawing.setPosition(8, 40,0,0);//move group one off screen
        if (checkbox && drawing.getOnAction() == "group2") drawing.setPosition(8, 2,0,0); //move group two on screen
    
        if (!checkbox && drawing.getOnAction() == "group2") drawing.setPosition(8, 40,0,0);//move group two off screen
        if (!checkbox && drawing.getOnAction() == "group1") drawing.setPosition(8, 2,0,0); //move group oneon screen
    
        }
    }
    

    【讨论】:

    • 谢谢。我有两张图纸,分别称为第 1 组和第 2 组。它们都是由三个按钮组成的组。 (稍后我将对各个按钮进行编程)。我的目标是如果在工作表上选中特定字段,则显示第 1 组按钮,如果未选中,则显示第 2 组按钮。所以我认为我不能使用引用页面上所有图纸的代码。我需要一种方法来区分绘图“Group 1”和绘图“Group 2”。
    • 所以你不能用代码显示/隐藏按钮,但你可以做我所做的......将它们移动 40 列。如果您创建一个名为“groupOne”的函数并将其分配给 groupOne,我将在上面更新我将如何做到这一点
    • 您的代码如何知道哪个绘图是第 1 组,哪个绘图是第 2 组?你不需要一些方法先给图纸贴上标签吗?
    • 要“标记”绘图,我右键单击绘图,选择三点菜单,“分配脚本”,然后输入标签。您可能必须在具有该函数名称的应用程序脚本中创建一个虚拟函数(不执行任何操作)。然后这里的脚本正在检查“on action”脚本是什么,并以此为基础工作。
    • 知道了。好的,我需要用更多的咖啡来解决这个问题。而且没有办法隐藏和显示?以下是 VBA 中的等效脚本供参考:
    【解决方案2】:

    如果有帮助,这里是 VBA 中的等效代码。第 1 组是一张图纸,第 2 组是另一张图纸,都在同一张纸上。

    .Shapes("Group1").Visible = msoCTrue ' Show Group 1 
    .Shapes("Group2").Visible = msoFalse ' Hide Group 2
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2020-05-15
      • 1970-01-01
      • 2021-05-13
      • 2016-10-21
      相关资源
      最近更新 更多