【发布时间】:2016-05-05 09:38:49
【问题描述】:
我遇到了一点问题。
我创建了一个 googlesheet 并包含一个脚本,如下所示,将其以 pdf 格式发送到我的电子邮件地址:
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp or FormApp.
ui.createMenu('Custom Menu')
.addItem('Send summary', 'menuItem1')
.addSeparator()
.addItem('Send summary&Week', 'menuItem2')
.addToUi();
}
function menuItem1() {
var source = SpreadsheetApp.getActiveSpreadsheet();
var subject = source.getSheets()[9].getRange('G1').getValue(); //cell for subject in sheet
var body = source.getSheets()[9].getRange('F1').getValue();
var sheetNumSummary = 9; // first sheet(tab) is zero, second sheet is 1, etc..
var source = SpreadsheetApp.getActiveSpreadsheet();
var thema = source.getSheets()[9].getRange('f3').getValue(); //
var mailTo = ('youremailaddress@here.com'); //source.getSheets() [0].getRange('D1').getValue(); // 'D1' cell which consists an emailaddress.
var name = source.getSheets()[9].getRange('G1').getValue(); // Name of Attachement
var sheets = source.getSheets();
sheets.forEach(function (s, i) {
if (i !== sheetNumSummary) s.hideSheet();
});
var url = Drive.Files.get(source.getId())
.exportLinks['application/pdf'];
url = url + '&size=letter' + //paper size
'&portrait=false' + //orientation, false for landscape
'&fitw=true' + //fit to width, false for actual size
'&sheetnames=false&printtitle=false&pagenumbers=false' + //hide optional
'&gridlines=false' + //false = hide gridlines
'&fzr=false'; //do not repeat row headers (frozen rows) on each page
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
'Authorization': 'Bearer ' + token
}
现在奇怪的事情来了。我可以将它与我使用的 Google 表格一起使用,但如果我复制它并使用菜单中的脚本,我会收到消息:
访问未配置。您的项目未启用 API(Drive API)。请使用 Google Developers Console 更新您的配置。
我在管理和开发者控制台中检查了所有内容,但找不到任何东西。我也激活:
双腿 OAuth 访问控制 允许访问所有 API 上面的密钥和秘密能够访问所有 Google 数据 API 的任何用户数据。了解更多
如果我留下第一张表的副本并停用 API 访问权限,则第一张表(原点)不再适用于脚本,并且我收到上述警报消息。我必须删除副本,重新激活 API 访问以使其再次工作。所以,不知何故,我猜,副本正在使用只允许使用一个项目表而不是该表的副本的脚本。有没有办法让它工作?或者,我如何将脚本添加/附加到副本。我使用了这个脚本: 函数 getSpreadsheetKey() { 返回 SpreadsheetApp.getActiveSpreadsheet().getId(); };
并看到它给了我原始表格中的谷歌密钥。这可能是我无法将脚本与谷歌表格副本一起使用的原因。但我仍然不知道如何正确接线。
【问题讨论】:
标签: api console google-sheets google-drive-api admin