首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌幻灯片自动更新链接从谷歌工作表链接的/tables

谷歌幻灯片自动更新链接从谷歌工作表链接的/tables
EN

Stack Overflow用户
提问于 2018-02-21 10:02:09
回答 4查看 7.4K关注 0票数 4

我有一个Google幻灯片演示文稿,其中有一些链接到Google Sheets中数据的单元格/表格。目前,我必须手动单击每个链接的单元格/表来更新值。我需要一个谷歌幻灯片脚本,将自动更新/批量更新/刷新这些链接,以便值/表得到自动更新。这有可能吗?

EN

回答 4

Stack Overflow用户

发布于 2018-03-09 21:13:55

既是也不是。

图表

是!这些可以批量更新:

代码语言:javascript
复制
function onOpen() {

SlidesApp.getUi() // Or DocumentApp or FormApp.
    .createMenu('Update Charts')
    .addItem("Update now !!!!!", 'refreshCharts').addToUi();
}

function refreshCharts(){
    var gotSlides = SlidesApp.getActivePresentation().getSlides();

    for (var i = 0; i < gotSlides.length; i++) {
        var slide = gotSlides[i];
        var sheetsCharts = slide.getSheetsCharts();

        for (var k = 0; k < sheetsCharts.length; k++) {
            var shChart = sheetsCharts[k];
            shChart.refresh();
        }
    }
}

来源:https://stackoverflow.com/a/48254442/

形状/表格

否:https://issuetracker.google.com/issues/64027131

来自谷歌2019年5月24日的更新

https://gsuiteupdates.googleblog.com/2019/05/bulk-update-docs-slides.html

票数 3
EN

Stack Overflow用户

发布于 2019-01-19 04:54:25

有没有人把这个弄好了?

代码语言:javascript
复制
function refreshCharts(){
var gotSlides = SlidesApp.getActivePresentation().getSlides();

for (var i = 0; i < gotSlides.length; i++) {
    var slide = gotSlides[i];
    var sheetsCharts = slide.getSheetsCharts();

    for (var k = 0; k < sheetsCharts.length; k++) {
        var shChart = sheetsCharts[k];
        shChart.refresh();
    }
}
}

我收到这个错误消息“无法刷新图表。请验证该图表是否为Google Sheets中的有效图表。”

票数 0
EN

Stack Overflow用户

发布于 2020-10-31 11:02:42

下面的示例设置假设有五张幻灯片和一些链接的图表:

  • 第一张幻灯片-主幻灯片标题/副标题(无图表)
  • 第二张幻灯片-包含从数据透视表图表链接的图表,该图表统计研发人员及其在谷歌表单响应表
  • 第三张幻灯片中计划做的事情-包含从数据透视表图表链接的图表,该图表统计IME员工及其从谷歌表单响应表
  • 计划执行的操作第四张幻灯片-包含从数据透视表图表链接的图表,该图表统计项目管理办公室员工及其计划从谷歌表单响应中执行的操作sheet
  • 第五张幻灯片-包含一个从数据透视表的图表链接而来的图表,该图表统计了员工总数以及他们计划从

Form responses sheet中执行的操作

下面的函数将使用链接图表更新幻灯片。为了让它工作,它需要高级谷歌服务:谷歌幻灯片应用编程接口https://developers.google.com/slides/

您可以从Resources > Advanced Google Services... > Google Slides API下的Google Apps Script IDE激活此高级功能。接口版本设置为v1。如果您不启用它,脚本将报告Slides is not defined at updateSlideCharts(...)

有关谷歌幻灯片API v1中RefreshSheetsChartRequest的更多详细信息,请参阅以下链接:https://developers.google.com/slides/reference/rest/v1/presentations/request#RefreshSheetsChartRequest

代码语言:javascript
复制
function updateSlideCharts() {
  var presentation = SlidesApp.openById(YOUR_SLIDE_ID); //you need to get this slide id from your slide URL 
  //if empty
  if (presentation == null) throw new Error('Presentation was not found');
  Logger.log("%s id = %s", presentation.getName(), presentation.getId());
  
  var slides = presentation.getSlides();
  if (slides == null) throw new Error('Slides were not found');
  Logger.log("Total of slides in %s: %d", presentation.getName(), slides.length);
  

  var presentationId = presentation.getId();
  var presentationRndChartId = slides[1].getSheetsCharts()[0].getObjectId();
  Logger.log("ObjectId of \"%s\": %s", slides[1].getSheetsCharts()[0].getTitle(), presentationRndChartId);
  var presentationImeChartId = slides[2].getSheetsCharts()[0].getObjectId();
  Logger.log("ObjectId of \"%s\": %s", slides[2].getSheetsCharts()[0].getTitle(), presentationImeChartId);
  var presentationPmoChartId = slides[3].getSheetsCharts()[0].getObjectId();
  Logger.log("ObjectId of \"%s\": %s", slides[3].getSheetsCharts()[0].getTitle(), presentationPmoChartId);
  var presentationStaffChartId = slides[4].getSheetsCharts()[0].getObjectId();
  Logger.log("ObjectId of \"%s\": %s", slides[4].getSheetsCharts()[0].getTitle(), presentationStaffChartId);
  
  var requests = [{
    refreshSheetsChart: {
      objectId: presentationRndChartId
    }
  }];
  
  // Execute the request.
  var batchUpdateResponse = Slides.Presentations.batchUpdate({
    requests: requests
  }, presentationId);
  Logger.log('Refreshed linked Sheets charts for \"%s\"', slides[1].getSheetsCharts()[0].getTitle());

  requests = [{
    refreshSheetsChart: {
      objectId: presentationImeChartId
    }
  }];
  
  // Execute the request.
  batchUpdateResponse = Slides.Presentations.batchUpdate({
    requests: requests
  }, presentationId);
  Logger.log('Refreshed linked Sheets charts for \"%s\"', slides[2].getSheetsCharts()[0].getTitle());

  requests = [{
    refreshSheetsChart: {
      objectId: presentationPmoChartId
    }
  }];
  
  // Execute the request.
  batchUpdateResponse = Slides.Presentations.batchUpdate({
    requests: requests
  }, presentationId);
  Logger.log('Refreshed linked Sheets charts for \"%s\"', slides[3].getSheetsCharts()[0].getTitle());
  
  var requests = [{
    refreshSheetsChart: {
      objectId: presentationStaffChartId
    }
  }];
  
  // Execute the request.
  var batchUpdateResponse = Slides.Presentations.batchUpdate({
    requests: requests
  }, presentationId);
  Logger.log('Refreshed linked Sheets charts for \"%s\"', slides[4].getSheetsCharts()[0].getTitle());
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48897088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档