てみスクリプト:
function TESTgetFileName() {
Logger.log(getFileName('0B4ptELk-D3USVi1NZ3ZGbkhqYXc'));
// ^^^^^^^^^^ file ID ^^^^^^^^^
}
function getFileName(id) {
var file = DriveApp.getFileById(id);
var fileName = file.getName();
var strFolders = getFolders(file);
return strFolders + '/' + fileName;
}
function getFolders(object) {
var folders = object.getParents();
if (!folders.hasNext()) { return 'My Drive'; }
var folder = folders.next();
var folderNames = [];
while (folder.getParents().hasNext()) {
var folderName = folder.getName();
folderNames.unshift(folderName);
folder = folder.getParents().next();
}
return folderNames.join('/');
}
結果が返されます
スクリプト機能:
0B4ptELk-D3USVi1NZ3ZGbkhqYXc → My Drive/something/folder/Photofile1.jpg
テストの私は、スクリプトエディタ、選択した機能TESTgetFileName
を開き、結果を得る
My Drive/Detalhes_Farmacia.Fotografia_Fachada_1.JPEG
。
この機能は、スプレッドシートから直接ではなくスクリプトから実行できます。あなたがシートからカスタム式としてそれを使用しようとすると、エラーがスローされます。
You do not have permission to call getFileById (line 8).
だから、より良いデータを取得し、シートに結果を書き込むようにスクリプトから、それを使用します。
[ドライブアプリ](https://developers.google.com/apps-script/reference/drive/drive-app)、[関連するQ on SO](http://stackoverflow.com/質問/ 25684098/how-to-make-a-list-on-google-spreadsheet-of-a-google-drive-in-a-google-drive-folder) –
これはフォームに対応しています。各行には、固有のアイテムのURL(画像)があります。すべてのファイルをリストするだけでは不十分です。各行を対応するURLにマップすることができないため(各行の有益な情報が失われるため) –
ファイルにアクセスできるようにしてください。スクリプトをテストすることができます。私のファイルには、 'https://drive.google.com/file/d/key ...'のようなリンクがありますので、コードがリンクで動作するかどうかわかりません: 'https://docs.google.com/ uc?id = ... ' –