我试图在我的网站上添加一项功能,如下所示:
单击按钮会将文本附加到Google文档。
显然我需要在驱动器中创建一个Apps脚本。 问题是如何从我的网站触发Apps脚本。您可以假设我是驱动器/文档的所有者,因此有权以任何我喜欢的方式编辑它。
我看过这些主题:
似乎它们都是从驱动器本身执行的操作,而不是远程触发。
我还在Google中查找了Apps Script API,但还没有找到办法。它甚至可能吗?
答案 0 :(得分:4)
是的,有可能。
首先编写一个可更改所需文档的Apps脚本。然后将其部署为任何人都可以访问的网络应用running as you,甚至是匿名的。在“Apps脚本”页面上查看the guides,了解如何将脚本编写为网络应用。
您的脚本将有一个公共网址,您可以从您的网站拨打电话,让它“正常”远程运行。
答案 1 :(得分:4)
为了提供一个Henrique建议的示例,这里有一个small webapp,它将文本添加到我自己的publicly viewable document(除了这里的任何人检查它有效之外,它不需要公开! )
我是用UiApp写的,但如果你愿意,你当然可以使用HTMLService。
该应用程序以我的身份运行,但即使是匿名的人也可以访问。
// publicly viewable test doc url : https://docs.google.com/document/d/1THzBTURxGr2CdUmcZ7i2zD-RM8I3im2JCSHI3BHlkeM/edit
function doGet(){
var app = UiApp.createApplication().setTitle('docEdit');
var panel = app.createAbsolutePanel().setSize('100%','100%').setStyleAttributes({'padding':'40px','backgroundColor':'lightBlue'});
var text = app.createTextArea().setName('text').setPixelSize(500,300);
var grid = app.createFlexTable().setId('grid');
grid.setText(0,0,'Add your text').setWidget(1,0,text);
var handler = app.createServerHandler('writeText').addCallbackElement(panel);
grid.setWidget(2,0,app.createButton('update document',handler).setId('btn'));
app.add(panel.add(grid));
return app;
}
function writeText(e){
var doc = DocumentApp.openById('1THzBTURxGr2CdUmcZ7i2zD-RM8I3im2JCSHI3BHlkeM');
var now = Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'MMM/dd/yyyy @ hh:mm:ss');
var body = doc.getBody();
body.appendParagraph('Append text on '+now+' : '+e.parameter.text);
doc.saveAndClose();
var app = UiApp.getActiveApplication();
var grid = app.getElementById('grid');
grid.setWidget(3,0,app.createHTML('Thanks,<br>Your text has been added to the document'));
app.getElementById('btn').setEnabled(false).setHTML('Button disabled');
return app;
}