我有一个问题,我创建了一个名为“测试”的google工作表。在此文件中,有一个Google幻灯片链接,我想在复制“测试”文件时让Google幻灯片文件也复制并更新Google幻灯片链接。
能帮我吗?
先谢谢了。 毒素
答案 0 :(得分:0)
从这么短的问题来看,我认为这个问题很难理解,因此我将详细说明。
需要发生什么:
为此,您将使用附加到工作表的Apps脚本文件。该脚本将创建一个自定义菜单,以将功能添加到表格中。
还有其他方法可以执行此操作,但这也可以使副本保持此功能。 (因此,副本可以自己复制)。
以下是代码(带有注释):
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu("Custom Actions") //Creates a custom menu item called "Custom Actions"
.addItem("Clone Files", "cloneFiles") //Adds a clickable button to call the cloneFiles() function.
.addToUi(); //Displays the new menu.
}
function cloneFiles() {
var originalSheet = DriveApp.getFileById(
SpreadsheetApp.getActive().getId()); //Get the file Id of the current Spreadsheet.
var originalSlide = DriveApp.getFileById(
SlidesApp.openByUrl( //Opens the spreadsheet with the URL
SpreadsheetApp.getActive()
.getSheetByName("Sheet1") //Gets the url on Sheet1
.getRange("A1") //On cell A1
.getValue()).getId()); //Get the file Id
var newSheet = originalSheet.makeCopy("New Sheet"); //Create a copy and name it "New Sheet"
var newSlide = originalSlide.makeCopy("New Slide"); //Create a copy and name it "New Slide"
SpreadsheetApp.flush(); //Forces the spreadsheets to be updated to their final value.
SpreadsheetApp.open(newSheet).getSheetByName("Sheet1").getRange("A1").setValue(newSlide.getUrl()); //Then alters the url to the copied file.
SpreadsheetApp.getUi().showModalDialog(
HtmlService.createHtmlOutput("<p>New Files Created!<p><ul><li><a href='"+newSheet.getUrl()+"'>New Sheet</a></li><li><a href='"+newSlide.getUrl()+"'>New Slide</a></ul>")
.setHeight(150)
.setWidth(150), "Copied files");
}
将其添加到工作表后,只要用户打开它,就会看到一个额外的按钮:
点击我们的自定义操作后,他们将看到带有新链接的漂亮弹出窗口:
希望这会有所帮助!
答案 1 :(得分:0)
我的代码:
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu("Custom Actions") //Creates a custom menu item called "Custom Actions"
.addItem("Clone Files", "cloneFiles") //Adds a clickable button to call the cloneFiles() function.
.addToUi(); //Displays the new menu.
}
function cloneFiles() {
var originalSheet = DriveApp.getFileById('E4y2jP1o9sbJvvFLYwzlN0UtlfBfzxX8Y');
SpreadsheetApp.getActive().getId(); //Get the file Id of the current Spreadsheet.
var originalSlide = DriveApp.getFileById('r8R3HepThon1dXRK6iPLjwRhSU');
var sss = SlidesApp.openByUrl('https://docs.google.com/presentation/d/r8R3HepThon1dXRK6iPLjwRhSU') //Opens the spreadsheet with the URL
var ss = sss.getSheetByName('justificationfile');
var sheet = ss.getSheets()[18];
var value = sheet.getRange('B12').getValue().getId();
var newSheet = originalSheet.makeCopy("New Sheet"); //Create a copy and name it "New Sheet"
var newSlide = originalSlide.makeCopy("New Slide"); //Create a copy and name it "New Slide"
SpreadsheetApp.flush(); //Forces the spreadsheets to be updated to their final value.
SpreadsheetApp.open(newSheet).getSheetByName("justificationfile").getRange("B12").setValue(newSlide.getUrl()); //Then alters the url to the copied file.
SpreadsheetApp.getUi().showModalDialog(
HtmlService.createHtmlOutput("<p>New Files Created!<p><ul><li><a href='"+newSheet.getUrl()+"'>New Sheet</a></li><li><a href='"+newSlide.getUrl()+"'>New Slide</a></ul>")
.setHeight(150)
.setWidth(150), "Copied files");
}
我有一个工作表,其ID为“ E4y2jP1o9sbJvvFLYwzlN0UtlfBfzxX8Y”,幻灯片为“ r8R3HepThon1dXRK6iPLjwRhSU”。我要克隆此工作表文件。有一个名为“ justificationfile”的窗口,在该窗口的B12单元中有一个链接。现在,当我克隆图纸文件时,我想克隆幻灯片文件(由B12单元中的链接定义)并自动更新链接。
上面的代码共享存在错误。当我尝试您给我的代码时:
SpreadsheetApp.getActive()
.getSheetByName("Sheet1") //Gets the url on Sheet1
.getRange("A1") //On cell A1
.getValue()).getId()); //Get the file Id
我收到一条错误消息:“无法读取null的属性'getRange'”
如果您有任何帮助的想法。
谢谢。