【发布时间】:2023-03-18 14:41:01
【问题描述】:
我正在使用 Google 表格来跟踪案例的详细信息。在工作表上输入信息后,我将 URL 粘贴到相关 Doc 中,以便从工作表中打开文件。
我想用工作表中的信息更新 Doc 文件的描述。我在粘贴网址时,希望它拉取相关的列信息并输入到Doc描述中。
代码如下:
function onEdit(event){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var changedCell= event.source.getActiveRange().getA1Notation();
var column = ss.getRange(changedCell).getColumn();
if(column == "19"){
var cellValue = ss.getRange(changedCell).getValue();
var id = cellValue.replace("https://drive.google.com/a/mine.net/file/d/","")
.replace("https://drive.google.com/open?id=","")
.replace("/view?usp=sharing","")
.replace("&authuser=0","");
var row = ss.getRange(changedCell).getRow();
var desc = Utilities.formatDate(ss.getRange("B"+row).getValue(),"GMT","MM/dd/yyyy")
+" "+ss.getRange("C"+row).getValue()
+" "+ss.getRange("D"+row).getValue()
+" "+ss.getRange("E"+row).getValue();
var file = DriveApp.getFileById(id);
file.setDescription(desc);
}
}
当我通过调试器运行它时,它可以完美运行(如果我强制输入 changedCell 和 column 信息)并且我会在相关文件中看到更新的描述。
但是,当我尝试从电子表格运行它时,我收到此错误:
[14-11-23 19:40:31:061 MST] Execution failed: You do not have permission to call getFileById (line 104, file "Code") [0.006 seconds total runtime]
如果我没有权限,为什么它会在调试中运行?而且,我如何授予权限?我对这两个文件都有完全访问权限。
在相关说明中,有没有更好的方法从 url 中提取 id?
更新 这是我设置触发器和调用函数的屏幕截图
即使将列更改为数字后,它仍然从未触发警报。
【问题讨论】:
-
您确定在同一个项目中没有另一个名为 onEdit 的函数吗?它会阻止可安装的 onEdit 工作......
-
.gs 文件没有。有没有可能从其他地方得到一个?
-
任何绑定到电子表格的 .gs 文件始终处于活动状态...所以答案是肯定的。
-
有没有办法让我查看是否有任何其他 .gs 文件绑定到此工作表?
标签: google-apps-script triggers google-sheets