如何使用应用脚本更新现有图形的数据范围? [Google表格] [英] How to update the data range of an existing graph using app script? [Google Sheets]

查看:86
本文介绍了如何使用应用脚本更新现有图形的数据范围? [Google表格]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了下面的脚本,该脚本从onedit函数运行,用于编辑单元格J1。该图存在于标题为每日数据的工作表中。它将使用的数据来自标题为长期数据的工作表。



我使用以下链接作为指导: https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart



感谢您的帮助。

  onEdit(e)函数{

//此IF语句确保仅在编辑单元格J1时才运行:
if(
e.source.getSheetName()==每日数据& &
e.range.columnStart == 10&&
e.range.columnEnd == 10&
e.range.rowStart> = 1&& ;
e.range.rowEnd< = 1
){

var电子表格= SpreadsheetApp.getActive();
var daily_data =电子表格.getSheetByName(每日数据);
var LTD_data =电子表格.getSheetByName(长期数据);

//以上已通过测试并成功运行。下面没有...

var chart = daily_data.getCharts()[0];
var range = LTD_data.getRange( B2:J3)
chart = chart.modify()
.addRange(range)
.build();
电子表格.updateChart(图表);
}
}


解决方案


  • 您要更新



如果使用我的Google Apps脚本,则可以在每日数据的工作表中查看图表。理解是正确的,下面的修改如何?



修改点:




  • updateChart()是类表的方法。但是在您的脚本中, updateChart()用于类电子表格。这样,脚本将无法正常工作。 >

    模式1:



    在此模式中,范围被添加到现有范围中。



    修改后的脚本:



    从:

      spreadsheet.updateChart(chart ); 



    收件人:

      daily_data。 updateChart(chart); 



    模式2:



    在这种模式下,则会删除现有范围,并添加新范围。



    修改后的脚本:



    发自:

      var chart = daily_data.getCharts()[0]; 
    var range = LTD_data.getRange( B2:J3)
    chart = chart.modify()
    .addRange(range)
    .build();
    电子表格.updateChart(图表);



    收件人:

      var chart = daily_data.getCharts()[0]; 
    var range = LTD_data.getRange( B2:J3)
    var range = chart.getRanges();
    chart = chart.modify();
    range.forEach(function(range){chart.removeRange(range)});
    varmodifiedChart = chart.addRange(range).build();
    daily_data.updateChart(modifiedChart);



    注意:




    • 在上述情况下,可以使用OnEdit事件触发器的简单触发器。



    参考:





    如果我误解了您的问题,而这不是您想要的结果,对不起。


    I have created the script below, which runs from an onedit function for when cell J1 is edited. The graph exists in the sheet titled 'Daily Data'. The data it will be using is from a sheet titled 'Long Term Data'.

    I used the following link as guidance: https://developers.google.com/apps-script/reference/spreadsheet/embedded-chart.

    Thank you for any help.

    function onEdit(e) {
    
      //This IF statement ensures it will only run when cell J1 is edited:
      if (
        e.source.getSheetName() == "Daily Data" &&
        e.range.columnStart == 10 &&
        e.range.columnEnd == 10 &&
        e.range.rowStart >= 1 &&
        e.range.rowEnd <= 1 
      ) { 
    
        var spreadsheet = SpreadsheetApp.getActive();
        var daily_data = spreadsheet.getSheetByName("Daily Data");
        var LTD_data = spreadsheet.getSheetByName("Long Term Data");
    
           //ABOVE HAS BEEN TESTED AND RUNS SUCCESFULLY. THE BELOW DOES NOT...
    
        var chart = daily_data.getCharts()[0];
        var range = LTD_data.getRange("B2:J3")
        chart = chart.modify()
            .addRange(range)
            .build();
        spreadsheet.updateChart(chart);
      }
    }
    ;
    

    解决方案

    • You want to update chart in the sheet of Daily Data using Google Apps Script.

    If my understanding is correct, how about the following modification?

    Modification point:

    • updateChart() is the method of Class Sheet. But in your script, updateChart() is used for Class Spreadsheet. By this, the script doesn't work.

    When above point is reflected to your script, it becomes as follows.

    Pattern 1:

    In this pattern, the range is added to the existing ranges.

    Modified script:

    From:

    spreadsheet.updateChart(chart);
    

    To:

    daily_data.updateChart(chart);
    

    Pattern 2:

    In this pattern, the existing ranges are removed and new range is added.

    Modified script:

    From:

    var chart = daily_data.getCharts()[0];
    var range = LTD_data.getRange("B2:J3")
    chart = chart.modify()
        .addRange(range)
        .build();
    spreadsheet.updateChart(chart);
    

    To:

    var chart = daily_data.getCharts()[0];
    var range = LTD_data.getRange("B2:J3")
    var ranges = chart.getRanges();
    chart = chart.modify();
    ranges.forEach(function(range) {chart.removeRange(range)});
    var modifiedChart = chart.addRange(range).build();
    daily_data.updateChart(modifiedChart);
    

    Note:

    • In above case, the simple trigger of OnEdit event trigger can be used.

    References:

    If I misunderstood your question and this was not the result you want, I apologize.

    这篇关于如何使用应用脚本更新现有图形的数据范围? [Google表格]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆