标签: google-apps-script

在Google Apps脚本中停止错误"执行该操作需要授权"

当我尝试查看已部署的应用程序时,我不断收到此错误消息.

执行该操作需要授权

我该如何解决这个错误?

脚本中使用的服务:

  • ScriptDB
  • UiApp

(我想这就是全部)

我在文档中找不到答案,所以我非常感谢你的帮助.

web-applications google-apps-script google-apps-script-web-application

28
推荐指数
1
解决办法
3万
查看次数

未找到Google Apps脚本功能:doGet

我得到了一个

Script function not found: doGet
Run Code Online (Sandbox Code Playgroud)

要么

Script function not found: doPost
Run Code Online (Sandbox Code Playgroud)

当我获取/发布到我的Google脚本时:

function doGet(e){return ContentService.createTextOutput("User says")}

function doPost(e) {
  return HtmlService.createHtmlOutput(
    "<form action='http://www.example.com/users/gmail_permission/' method='post' id='foo'>" + 
    "<input type='hidden' name='gmail' value='getEmail()' >" +
    "<input type='hidden' name='id' value='e.parameter.user_id' >" +    
    "</form>" +
    "<script>document.getElementById('foo').submit();</script>");
}

function getEmail() {
  return Session.getActiveUser().getEmail();
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我在浏览器上访问Webapp URL时,我会收到上述错误.但是当我使用Hurl.it时,我只是被重定向到Google云端硬盘.但是,当我为您的最新代码测试网页应用时.在google.script.com上,GET响应正常.

很遗憾发生了什么......这是我的剧本:

 https://script.google.com/macros/s/AKfycbz0XGeoEuP4V6W60N7yP-dDiLltPefxmqzhMJurnGzOhPfqA_er/exec
Run Code Online (Sandbox Code Playgroud)

这是GET

 FROM Hurl.it - GET https://accounts.google.com/ServiceLogin?service=wise&followup=https://script.google.com/macros/s/AKfycbz0XGeoEuP4V6W60N7yP-dDiLltPefxmqzhMJurnGzOhPfqA_er/exec&continue=https://script.google.com/macros/s/AKfycbz0XGeoEuP4V6W60N7yP-dDiLltPefxmqzhMJurnGzOhPfqA_er/exec&passive=1209600

 FROM script.google.com - https://script.google.com/macros/s/AKfycbyCH4Jk7VcEIhE52jIorIBzcghRYAPRuwuzFSHwaWIB/dev

 FROM browser - https://script.google.com/macros/s/AKfycbz0XGeoEuP4V6W60N7yP-dDiLltPefxmqzhMJurnGzOhPfqA_er/exec
Run Code Online (Sandbox Code Playgroud)

google-apps-script

28
推荐指数
1
解决办法
3万
查看次数

尝试使用Google Script API读取电子表格中的单元格1,1

我是一个温和的有经验的程序员......我的OOP概念的理解OK,我一直在使用PHPMySQL最近.我已经开始涉足Google API脚本了.我正在尝试编写一个非常简单的程序来阅读谷歌电子表格中的单元格1,1.API未嵌入谷歌电子表格中,我需要它在SS之外运行.

这是有问题的代码:

function email() {

// Opens SS by its ID

var ss = SpreadsheetApp.openById("0AgJjDgtUl5KddE5rR01NSFcxYTRnUHBCQ0stTXNMenc");

// Get the name of this SS

var name = ss.getName();
Run Code Online (Sandbox Code Playgroud)

读取单元格1,1 *以下行不起作用*

var data = Range.getCell(0, 0);
Run Code Online (Sandbox Code Playgroud)

我知道这getCell()是Range类中的一个方法.从我在资源中看到的,看起来Range是顶级/父级/超级类.看看上面的粗体代码,我相信我已经创建了一个Range对象并尝试从该对象调用一个方法.我在这做错了什么?

谢谢你的期待!

google-apps-script

26
推荐指数
1
解决办法
10万
查看次数

从电子表格创建Google日历事件,但可以防止重复

我正在尝试编写一个脚本,该脚本将从Google电子表格中获取数据,并在我的Google日历中创建活动.

我管理得很好,但每次运行它都会产生重复.所以现在我试图通过在电子表格中创建一个列17来防止这种情况,每列自动生成唯一的事件ID,然后每次运行脚本时,它将查看每行的事件ID并删除相应的事件如果我已经更改了行,则在使用原始数据或更新的数据重新创建它之前在日历中.

我是新手编写的任何类型的脚本并拼凑在一起,但现在正在撞墙.任何人都可以解决这个问题吗?

function CalInsert() {
    var cal = CalendarApp.getDefaultCalendar();
    var id = SpreadsheetApp.getActiveSheet().getRange(2,17).getValue();

    if (id != 0) {
        var event = cal.getEventSeriesById(id);
        event.deleteEventSeries();
    }

    var sheet = SpreadsheetApp.getActiveSheet();
    var startRow = 2; // First row of data to process
    var numRows = sheet.getLastRow(); // Number of rows to process
    var dataRange = sheet.getRange(startRow, 1, numRows, sheet.getLastColumn());
    var data = dataRange.getValues();

    for (i in data) {
        var row = data[i];
        var title = row[0]; // First column
        var desc = …
Run Code Online (Sandbox Code Playgroud)

google-calendar-api google-sheets google-apps-script

26
推荐指数
1
解决办法
5万
查看次数

从Google Apps脚本上的URL获取文件ID的最简单方法

以下是我要做的事情:给定Google文档网址,我想获取文档ID以在Google云端硬盘上创建副本.我知道我可以通过一些正则表达式或替换URL来实现这一点,但由于在URL中有几种不同的表单来表示同一文档,我想找到一个通用的解决方案.

目前,这是我能想到的最好的:

function getFileIdFromUrl(url) {
  try {
    return getDocIdFromUrl(url);
  } catch (e) {
    return getSpreadsheetIdFromUrl(url);
  }
}

function getDocIdFromUrl(url) {
  var doc = null;
  try {
    doc = DocumentApp.openByUrl(url);
  } catch (e) {
    doc = DocumentApp.openByUrl(url + "/edit");
  }
  return doc.getId();
}

function getSpreadsheetIdFromUrl(url) {
  var spreadsheet = null;
  try {
    spreadsheet = SpreadsheetApp.openByUrl(url);
  } catch (e) {
    spreadsheet = SpreadsheetApp.openByUrl(url + "/edit");
  }
  return spreadsheet.getId();
}

function copy(url) { // may throw an exception if the URL is invalid …
Run Code Online (Sandbox Code Playgroud)

google-apps-script

26
推荐指数
4
解决办法
3万
查看次数

谷歌脚本,以查看文本是否包含值

我有一个谷歌表单,当用户提交它时将触发我的功能运行,这将创建他们作为Google Doc提交的内容的摘要.我知道它可以自动发送电子邮件,但我需要格式化,以便我的用户以后可以编辑它.

表单上有一些复选框 - 但getResponse()仅填充了选中的项目,我需要它来显示所有可能的选项.然后我会以某种方式表明检查了什么.

我找不到一种方法来查看文本是否包含值.就像在带有String的Java中一样,我可以做任何一个.contains("9th")或者.indexOf("9th") >=0 然后我会知道String包含第9个.我怎么能用谷歌脚本做到这一点?通过文档查看,我觉得它一定是最简单的事情.

var grade = itemResponse.getResponse();
Run Code Online (Sandbox Code Playgroud)

需要看看成绩是否包含9.

谢谢!

google-apps-script

26
推荐指数
3
解决办法
7万
查看次数

外部编辑器支持Google Apps脚本

我正在使用Google Apps脚本,并想知道我是否可以使用Google提供的任何编辑器.(我购买了Sublime Text,并希望使用它.)谷歌提供的是一个恶心的文字,即使我有一个巨大的屏幕和语法颜色,我觉得有点难以在白色背景上区分小文本,我没有像大量自定义键盘快捷键,我的所有包装等的Sublime的美女.

code-editor google-apps-script google-apps-script-editor

26
推荐指数
3
解决办法
1万
查看次数

如何在Google表格电子邮件中添加"修改回复"链接?

我有一个简单的Google表单来收集数据,并使用AppScript向填写完成的用户发送确认电子邮件.用户提交表单后,在确认后,他/她将看到一个链接来编辑他/她的回复.

我想将该链接作为确认电子邮件的一部分包含在内(现在,它只显示在页面上.)如何获取用于编辑已提交回复的URL?

我能够获得表格的链接SpreadsheetApp.getActiveSpreadsheet().getFormUrl().它给了我以下格式:https://docs.google.com/a/domain.com/spreadsheet/viewform?formkey=<formKey>

但是该链接不包括编辑密钥,这是用户编辑他/她的响应所必需的.预期的URL应如下所示:https://docs.google.com/a/domain.com/spreadsheet/viewform?formkey=<formKey>&edit=<editKey>

我在这里先向您的帮助表示感谢!

-K

编辑:

添加了一项功能请求:http://code.google.com/p/google-apps-script-issues/issues/detail?id = 1345&thanks = 1345&ts = 1337773007

google-apps-script google-forms

25
推荐指数
1
解决办法
4万
查看次数

如何使用Utilities.sleep()函数

功能的确切用途是 Utilities.sleep()什么?我们应该在函数调用或API调用之间使用它吗?

我使用Utilities.sleep(1000)中间函数调用,是不是?它会减慢执行时间吗?

google-apps-script

25
推荐指数
2
解决办法
7万
查看次数

电子邮件进入收件箱后如何触发Google Apps脚本?

我创建了一个Google Apps脚本,用于检查电子邮件是否包含附件,然后将其发送到另一个电子邮件地址.

它工作正常,但我想创建一个触发器,一旦新电子邮件到达收件箱就会启动脚本.

我已经能够创建一个每小时启动脚本的触发器,但这不是我想要的

gmail google-apps-script

25
推荐指数
2
解决办法
2万
查看次数