我们有两张 AL 表,本地的和国家的。我正在尝试获取它,以便当我们当地的 AL“日历”完成时,数据会复制到国家日历中。检查编辑的单元格是否位于国家电子表格中某人的行中,然后将其复制到国家电子表格上的相应行中。我不断得到
您无权调用 SpreadsheetApp.openByID。
function onEdit(e) {
var range = e.range
var rowNum = range.getRow()
var colNum = range.getColumn()
var sheetEdit = range.getSheet().getName()
var rowEdit = parseInt(rowNum)
var colEdit = parseInt(colNum)
Logger.log(rowEdit)
Logger.log(colEdit)
Logger.log(sheetEdit)
var locSheet = "ID_Local_AL"
var natSheet = "ID_National_AL" //test
var copyEdit = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetEdit).getRange(rowEdit, colEdit, 1, 1).getValue()
//national Rows
var rhRowSMT = SpreadsheetApp.openById(natSheet).getSheetByName(sheetEdit).getCell(12,colEdit)
var jpRowSMT = SpreadsheetApp.openById(natSheet).getSheetByName(sheetEdit).getCell(13,colEdit)
var sahRowSMT = SpreadsheetApp.openById(natSheet).getSheetByName(sheetEdit).getCell(14,colEdit)
var hlRowSMT = SpreadsheetApp.openById(natSheet).getSheetByName(sheetEdit).getCell(15,colEdit)
if (rowEdit = 10) {
rhRowSMT.setValue(copyEdit)
}
else if (rowEdit = 11) {
jpRowSMT.setValue(copyEdit)
}
else if (rowEdit = 12) {
sahRowSMT.setValue(copyEdit)
}
else if (rowEdit = 13) {
hlRowSMT.setValue(copyEdit)
}
}
理论上,如果其中一个团队放入 AL,则将检查单元格是否要复制,并将该单元格的内容复制到国家工作表上的同一日期中。
相反我得到
您无权调用 SpreadsheetApp.openById。所需权限:https://www.googleapis.com/auth/spreadsheets
在 onEdit(代码:28)
我知道这是因为它们是两个不同的电子表格,但是有解决方法吗?
Issue:
权限不足,无法调用SpreadsheetApp.openById()
.
Reason:
该脚本作为简单的触发,其中运行authMode = LIMITED
.
解决方案:
设立一个可安装触发器相反,这样它就可以运行authMode = FULL
.
我建议更改脚本的名称,例如:
function syncSheets(e) {
然后运行以下脚本(改编自谷歌的例子) 设置新的可安装触发器:
/**
* Creates a trigger for when a spreadsheet is edited.
*/
function createSpreadsheetEditTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('syncSheets')
.forSpreadsheet(ss)
.onEdit()
.create();
}
参考:
- 简单的触发器
- 可安装的触发器
- 事件对象(有authMode细节)
- 以编程方式管理触发器
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)