我有一個應用程式腳本,可以將 google 驅動器檔案夾的檔案名和 URL 寫入指定的作業表。在其當前形式中,它將驅動器檔案夾的完整內容附加到作業表中。我需要它做的是首先將作業表上已存在的檔案名與驅動器中的檔案名進行比較,然后僅附加作業表上尚未存在的檔案。
這是我試圖用來比較兩個串列的代碼,并且只添加不存在的名稱。
function listFolderContents() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('files');
const folder = DriveApp.getFolderById('1ShsR9jQAkTCeezouk6sW0NnPpo-kHFjK');
const contents = folder.getFiles();
const existsOnSheet = sheet.getRange(1,1,sheet.getLastRow(),1).getValues();
//console.log(existsOnSheet);
//I want to only append rows with names that do not already exist
var file;
var name;
var link;
var row;
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
link = file.getUrl();
if (name === existsOnSheet){
return
}
else{
sheet.appendRow( [name, link] );
}
}
}
uj5u.com熱心網友回復:
可能你應該替換這個:
if (name === existsOnSheet)
有了這個:
if (existsOnSheet.includes(name))
并在flat()此處添加:
const existsOnSheet = sheet.getRange(1,1,sheet.getLastRow(),1).getValues().flat();
以防萬一:
var old_list = ['a', 'b', 'c']
var new_list = ['a', 'b', 'c', 'd', 'e']
var new_files = new_list.filter(x => !old_list.includes(x))
console.log(new_files) // output: ['d', 'e']
并且不要忘記 Google Drive 上的檔案夾可以包含具有相同名稱的檔案。也許使用 ID 或 URL 來標識檔案夾中的檔案是有意義的。
uj5u.com熱心網友回復:
最終作業腳本:
// replace your folder below with the folderID for which you want a listing
function listFolderContents() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('index');
const folder = DriveApp.getFolderById('1ShsR9jQAkTCeezouk6sW0NnPpo-kHFjK');
const contents = folder.getFiles();
const existsOnSheet = sheet.getRange(2,1,sheet.getLastRow(),1).getValues().flat();
//console.log(existsOnSheet);
//I want to only append rows with names that do not already exist
var file;
var name;
var link;
//var row;
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
link = file.getUrl();
if (existsOnSheet.includes(name))
{return
}
else {
sheet.appendRow( [name, link] );
}
}
}```
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/392347.html
上一篇:只在變數中存盤一個固定值一次
