我想创建一个自定义函数,从 Google 表格中的文件名中提取驱动器 URL.
I would like to create a custom function that pulls a Drive URL from a file name in Google Sheets.
所以,使用下面的代码:
So, using the code below:
A1
函数 =getFile(A1)
将返回 URL
getFile()
时,出现以下错误.getFile()
from within my sheet, I get the error below.我的代码:
function getFile(cell) {
var filename = encodeURI(cell);
var url = "https://www.googleapis.com/drive/v3/files?fields=files(id,name)&q=name+contains+'" + filename + "' and trashed=false";
var params = {
method: "GET",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
var res = UrlFetchApp.fetch(url, params).getContentText();
var json = JSON.parse(res);
return res; // outputs response below
if(json){
var objFiles = json.files[0];
var fileID = objFiles.id
var resURL = "https://docs.google.com/spreadsheets/d/" + fileID;
Logger.log(resURL);
//return resURL; // only works when run within script editor
}
}
错误:
"{
"error": {
"errors": [
{
"domain": "global",
"reason": "authError",
"message": "Invalid Credentials",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Invalid Credentials"
}
}
"
我猜我的 Auth 令牌有问题.有人可以指导我解决这个问题吗?提前致谢!
I'm guessing something's wrong with my Auth token. Can someone direct me to resolving this? Thanks in advance!
@I'-'I的answer 是正确的.虽然我不确定这是否是您想要的,但这个解决方法怎么样?我也遇到过同样的问题.当时,我使用了以下解决方法.
@I'-'I's answer is correct. Although I'm not sure whether this is what you want, how about this workaround? I have also experienced the same issue. At that time, I had used the following workaround.
流程如下.
请将此功能安装为时间驱动触发器.当然,你也可以手动运行这个函数.
Please install this function as the time-driven trigger. Of course, you can run manually this function.
function setAccessToken() {
PropertiesService.getScriptProperties().setProperty("accessToken", ScriptApp.getOAuthToken());
}
在你的脚本中,请修改如下.
In your script, please modify as follows.
var params = {
method: "GET",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
到:
var params = {
method: "GET",
headers: {"Authorization": "Bearer " + PropertiesService.getScriptProperties().getProperty("accessToken")},
muteHttpExceptions: true
};
这篇关于如何通过自定义函数/脚本从具有正确授权的 Google 表格中的文件名中获取文件 URL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!