If you mean the URL/indexed link in a sheet chart, not the linked chart property from it:
You can use removeLink()
for every SheetsChart
in every slide. Refer https://developers.google.com/apps-script/reference/slides/sheets-chart#removeLink()
function removeAllSheetsChartLinks() {
SlidesApp.openById(SLIDE_ID).getSlides()
.forEach(function(s) {
s.getSheetsCharts().forEach(function(c) {
if (c.getLink() != null) c.removeLink();
});
});
}
But, if you mean to remove the linked chart property, you have to delete the current sheet chart that you want to remove the linked chart property from and create a new sheet chart with the same properties as the original sheet chart but with linkingMode: 'NOT_LINKED_IMAGE'
property. It is because there is no direct Slides API request for such functionality.
https://developers.google.com/slides/reference/rest/v1/presentations/request#LinkingMode
function removeLinkChartExample() {
var presentation = SlidesApp.openById(SLIDE_ID);
//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);
//refresh all linked sheet charts
slides.forEach(function(s) {
s.getSheetsCharts().forEach(function(c) {
//if (c.getLink() != null)
{ Logger.log("LINKED CHART TITLE: %s, \"%s\"",c.getTitle(), c.getSpreadsheetId()); c.refresh(); }
});
});
var chartToRemoveLinkedChart = slides[0]; //sheet that you want to remove its linked chart property
if (chartToRemoveLinkedChart == null) return;
var presentationId = presentation.getId();
var sheetObjectId = chartToRemoveLinkedChart.getObjectId();
Logger.log("Sheet ObjectId of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), sheetObjectId);
var presentationStaffChartId = chartToRemoveLinkedChart.getSheetsCharts()[0].getObjectId();
Logger.log("Linked Chart ObjectId of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), presentationStaffChartId);
var spreadsheetId = chartToRemoveLinkedChart.getSheetsCharts()[0].getSpreadsheetId();
Logger.log("SS Id of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), spreadsheetId);
var chartId = chartToRemoveLinkedChart.getSheetsCharts()[0].getChartId();
Logger.log("SS Chart Id of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), chartId);
var width = chartToRemoveLinkedChart.getSheetsCharts()[0].getWidth();
Logger.log("Chart width of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), width);
var height = chartToRemoveLinkedChart.getSheetsCharts()[0].getHeight();
Logger.log("Chart height of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), height);
var top = chartToRemoveLinkedChart.getSheetsCharts()[0].getTop();
Logger.log("Chart top of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), top);
var left = chartToRemoveLinkedChart.getSheetsCharts()[0].getLeft();
Logger.log("Chart left of \"%s\": %s", chartToRemoveLinkedChart.getSheetsCharts()[0].getTitle(), left);
//remove the linked chart from this sheet before creating a new one
chartToRemoveLinkedChart.getSheetsCharts()[0].remove();
presentationStaffChartId = "ga66641c4d9_0_11"; //you need to give your own unique id
var requests = [{
"createSheetsChart": {
"objectId": presentationStaffChartId,
"spreadsheetId": spreadsheetId,
"chartId": chartId,
"linkingMode": "NOT_LINKED_IMAGE",
"elementProperties": {
"pageObjectId": sheetObjectId,
"size": {
"width": {
"magnitude": width,
"unit": "PT"
},
"height": {
"magnitude": height,
"unit": "PT"
}
},
"transform": {
"scaleX": 1,
"scaleY": 1,
"translateX": left,
"translateY": top,
"unit": "PT"
}
}
}
}];
// Execute the request.
var batchUpdateResponse = Slides.Presentations.batchUpdate({
requests: requests
}, presentationId);
}