gpt4 book ai didi

javascript - 用于检索要在 Google 表格数组中设置的 Google Drive 文档超链接的 Google 脚本

转载 作者:行者123 更新时间:2023-12-04 15:00:13 26 4
gpt4 key购买 nike

我有一个 Google 表格,每个单元格中都有 Google Drive 文档名称。所以每个单元格都包含一个 Google Drive 文档名称。各种单元一起形成一个阵列。

我正在尝试根据每个 Google 表格单元格中的名称检索这些 Google Drive 文档的超链接,并在每个单元格中设置这些超链接(通过替换每个单元格中的文档名称)。请注意,Google 云端硬盘文档不在相同的 Google 云端硬盘文件夹中。

我设法修改了现有代码,使其在我的上下文中工作;但是,它仅适用于 1 列数组。当我尝试将范围扩展到多个列时,所有超链接都返回“未定义”url(即使对于之前工作的第一列也是如此)。

Google array example

请参阅下面我的代码。任何帮助将非常感激。非常感谢。

function getFile() {

const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Sheet1');

var lastRow = sheet1.getLastRow();

var range = sheet1.getRange(2,1,lastRow - 1,4);
var names = range.getValues();

var nameUrl ={};

for (let i in names) {

var files = DriveApp.getFilesByName(names[i]);

while (files.hasNext()) {
var file = files.next();
var fullName = file.getName();
var url = file.getUrl();
nameUrl[fullName] = url;
}
}

var links = names.map(function(e) {
return [
'=HYPERLINK("' + nameUrl[e] + '","' + e + '")'
];
});
range.setValues(links);
}

最佳答案

说明:

  • 您非常接近,但您的代码适用于一列的二维数组,您需要重新设计代码以处理多列的二维数组。

我使用双 map对每个单元格进行迭代的方法,通过这样做,您不需要创建对象 nameUrl,这也会减慢您的代码。

解决方案:

function getFile() {   
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet1 = ss.getSheetByName('Sheet1');
const lastRow = sheet1.getLastRow();
const range = sheet1.getRange(2,1,lastRow - 1,4);
const names = range.getValues();
const data = names.map(r=>r.map(c=>{
let files = DriveApp.getFilesByName(c);
while (files.hasNext()) {
var file = files.next();
var url = file.getUrl();
return c!=''?'=HYPERLINK("' + url + '","' + c + '")':'';
}}));
range.setValues(data);
}

关于javascript - 用于检索要在 Google 表格数组中设置的 Google Drive 文档超链接的 Google 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67088278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com