Google apps script 如何在Google Drive Apps脚本中创建快捷方式而不是创建多个父项
我一直想在这里读到: 我理解快捷方式的基本原理,但我不知道如何在代码中使用它——语法 我需要将快捷方式放在与原始文件夹同名的文件夹中,而不是将文件夹放在多个文件夹中 我在草稿中放置了一个名为Project1的原始文件夹。此文件夹的快捷方式必须位于Folder2/Drafts、Folder3/Drafts和Folder4/Drafts中 如果我后来将原始文件夹Project1 ex.的名称更改为“New Building”,我需要在文件夹2、3和4中找到快捷方式(通过Id?-我可以将快捷方式的Id放在数据表中,从中可以对其进行迭代)-然后将其重命名为原始文件夹的新名称 当我将项目1从草稿移到确认时。我需要将快捷方式从Folder2/草稿移动到Folder2/确认等 这主要是放置新文件夹的基本代码Google apps script 如何在Google Drive Apps脚本中创建快捷方式而不是创建多个父项,google-apps-script,google-drive-api,shortcut,Google Apps Script,Google Drive Api,Shortcut,我一直想在这里读到: 我理解快捷方式的基本原理,但我不知道如何在代码中使用它——语法 我需要将快捷方式放在与原始文件夹同名的文件夹中,而不是将文件夹放在多个文件夹中 我在草稿中放置了一个名为Project1的原始文件夹。此文件夹的快捷方式必须位于Folder2/Drafts、Folder3/Drafts和Folder4/Drafts中 如果我后来将原始文件夹Project1 ex.的名称更改为“New Building”,我需要在文件夹2、3和4中找到快捷方式(通过Id?-我可以将快捷方式的Id
var folder1 = draft.createFolder("DRAFT - "+"Project1");
var folder1Url = folder1.getUrl();
var folder1Id = folder1.getId();
folder2Draft.addFolder(folder1);
更改文件夹名称时,其他位置的名称(当然)也会更改。但据我所知,捷径并非如此。我已经用手动创建的快捷方式进行了测试,确认了这一点
在确认项目时,重命名部分我会这样做:
var folder1 = DriveApp.getFolderById(folder1Id);
var folder1NameOld = folder1.getName();
var folder1NameNew = folder1NameOld.replace("DRAFT - ","");
folder1.setName(folder1NameNew);
我在确认项目时移动文件,使用简单的:
confirmed.addFolder(folder1);
draftsFolder.removeFolder(folder1);
脚本是在电子表格中生成的,我已经将所有文件夹ID放在文件的数据表中,这样我就可以很容易地引用不同的文件夹,如果需要,还可以收集快捷方式的ID以便能够重命名它们
更新:
要提出一个更清楚的问题:
如何使用快捷方式而不是多重养育
function shortcut() {
var s = SpreadsheetApp.getActive();
var sheet = s.getActiveSheet();
var projectFolderId = sheet.getRange('B1').getValue();
var folder1DraftId = sheet.getRange('B2').getValue();
var folder2DraftId = sheet.getRange('B3').getValue();
var folder1 = DriveApp.getFolderById(projectFolderId);
DriveApp.getFolderById(folder1DraftId).addFolder(folder1);
DriveApp.getFolderById(folder2DraftId).addFolder(folder1);
}
我相信你的目标如下
- 您希望实现以下脚本作为快捷方式
function shortcut() { var s = SpreadsheetApp.getActive(); var sheet = s.getActiveSheet(); var projectFolderId = sheet.getRange('B1').getValue(); var folder1DraftId = sheet.getRange('B2').getValue(); var folder2DraftId = sheet.getRange('B3').getValue(); var folder1 = DriveApp.getFolderById(projectFolderId); DriveApp.getFolderById(folder1DraftId).addFolder(folder1); DriveApp.getFolderById(folder2DraftId).addFolder(folder1); }
- 在上面的脚本中,
被放在folder1
和folder1DraftId
的文件夹中folder2DraftId
- 在这种情况下,将使用驱动器API中的files.create方法。但在现阶段,文件的方法:在驱动器中插入API v2也可以创建快捷方式。因此,在这个答案中,使用了AdvancedGoogleServices的驱动API v2
-
- 官方文件如下
-
注意:使用
必须指定MIME类型文件创建快捷方式的应用程序。insert
应用程序/vnd.google Apps.drive sdk
- 但是,当使用
时,无法创建快捷方式。我不确定这是错误还是当前的规范。所以我使用application/vnd.google apps.drive sdk
作为mimeTypeapplication/vnd.google apps.shortcut
-
注意:使用
- 官方文件如下
var folder1 = DriveApp.getFolderById(projectFolderId);
DriveApp.getFolderById(folder1DraftId).addFolder(folder1);
DriveApp.getFolderById(folder2DraftId).addFolder(folder1);
const folderIDs = [folder1DraftId, folder2DraftId];
folderIDs.forEach(f => {
Drive.Files.insert({
shortcutDetails: {targetId: projectFolderId},
parents: [{id: f}],
title: DriveApp.getFolderById(projectFolderId).getName(),
mimeType: "application/vnd.google-apps.shortcut"
});
});