调用 SpreadsheetApp.OpenById() 的权限

Luc*_*ndo 1 google-sheets google-apps-script custom-function

问题是,我需要从外部电子表格中读取注释,所以最近我搜索并找到了这个答案:获取单元格注释值,但它不适用于外部电子表格,我尝试了很多方法,但没有任何效果,有人可以帮助我吗?

表 A - 示例

表 A - 示例

表 B - 获取值 (ImportRange) - 请求

表 B - 获取值 (ImportRange) - 请求

表 B - 获取值 (ImportRange) - 返回

表 B - 获取值 (ImportRange) - 返回

表 B - 获取注释(自定义脚本) - 请求失败

表 B - 获取注释(自定义脚本) - 请求失败

function getNote2(cell, token)
{
   var ss = SpreadsheetApp.openById(token)
   var range = ss.getRange(cell)
   return range.getNote();
}
Run Code Online (Sandbox Code Playgroud)

zig*_*hka 5

文档指定:

电子表格
只读(可以使用大多数 get*() 方法,但不能使用 set*())。
无法打开其他电子表格(SpreadsheetApp.openById() 或 SpreadsheetApp.openByUrl())。

所以不幸的是你需要想出另一个解决方案

可能的解决方案是

  • 从 Apps 脚本编辑器运行脚本,其中值
  • 将脚本导入为自定义宏

在此输入图像描述

无论如何,您都需要稍微重写您的脚本

  • 相反,return您需要使用setValue()方法将注释设置到所选单元格(例如活动单元格)中

示例脚本

function callMe(){
  var activeCell = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell();
  var cellWithNotes = "A4";
  var id = "PASTE HERE THE SPREADSHEET ID";
  var note = getNote(cellWithNotes, id);
  activeCell.setValue(note);
}


function getNote(cell, token)
{
  var ss = SpreadsheetApp.openById(token)
  var range = ss.getRange(cell)
  return range.getNote();
}
Run Code Online (Sandbox Code Playgroud)
  • callMe()手动或以上述其他方式运行该函数
  • cellReference您可以动态检索它们,例如id从表中检索它们,而不是硬编码 - 根据您的情况