如何编写删除文件的Google Apps脚本?
这找到文件:
var ExistingFiles = DocsList.find(fileName);
Run Code Online (Sandbox Code Playgroud)
但DocsList.deleteFile删除文件不存在.
有没有办法将这些文件移动到另一个文件夹或垃圾箱?
我要考虑的另一种解决方法是能够覆盖具有相同名称的现有文件.
目前,当我想创建一个已在MyDrive中使用的名称的文件时,它会创建一个具有相同名称的第二个文件.我想保留1个文件(新文件保留,旧文件丢失).
我正在尝试使用Google Apps脚本作为网络应用创建Facebook应用,作为后端.唯一似乎适用的Facebook API是Javascript SDK,但我甚至无法使用它.
我目前遇到的问题是Facebook JS SDK使用以"__"结尾的Javascript标识符.Google Apps脚本限制以双下划线结尾的名称.
如果我使用Facebook的JS文件的修改副本而没有名称中的双重下划线,我会收到此错误:
Refused to display [URL] in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'
知道怎么让GAS和FB一起玩得好吗?
我想只在单元格为空时才在单元格中输入变量.但是,if语句不起作用.有什么建议?
var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getRange("'odpov?di'!A2:J");
var rws=r.getNumRows();
ax=r.getCell(rws-1, 10).getValue();
if (ax == "") {
ax = "foo";
r.getCell(rws-1, 9).setValue(ax);
}
Run Code Online (Sandbox Code Playgroud) 有四种方法可以创建新文件:
它们都被称为服务.Drive API称为高级服务.那么,你应该使用哪一个?我不知道,这取决于.此问题与Drive API高级服务有关.
我不想使用2或3个服务来完成工作.我想用其中一个.但是要决定使用哪一个,我需要知道所有这些的功能和选项.如果最简单和最容易使用的将会做我想要的一切,那么我将使用它.
如果我可以使用Drive API创建新文件,但我需要使用DriveApp服务将我使用Drive API创建的文件移动到我想要的文件夹,那么在特定情况下使用Drive API毫无意义.
我可以通过Google Apps脚本.gs代码在我的Google云端硬盘中创建一个新文件,但该文件会写入主"我的云端硬盘".我想将文件直接写入子文件夹.我目前的代码是:
var fileNameSetA = 'someFile.jpg';
var uploadedBlobA = an image uploaded with a file picker;
var fileTestDrive = {
title: fileNameSetA,
mimeType: 'image/jpeg'
};
fileTestDrive = Drive.Files.insert(fileTestDrive, uploadedBlobA);
Run Code Online (Sandbox Code Playgroud)
即使代码有效,我也不知道为什么语法是这样的,我找不到告诉我原因的文档.我可以找到一个属性列表:
在title:和mimeType:可选属性的部分Request Body.从示例中,可选属性显然放在一个键:值配对对象中.那么,语法是:
Drive.Files.insert(optional properties, …Run Code Online (Sandbox Code Playgroud) 这些方法与Google Apps脚本中的SpreadSheetApp类有何不同?
两者都返回"当前活动的电子表格,如果没有则返回null".它们之间的区别究竟是什么?我什么时候应该使用每一个?
我想在电子表格的顶部显示HTML,方法是创建一个html元素并将其放在电子表格的顶部.
例如,如果我通过合并A1:G5在我的工作表顶部创建了一个大单元格,是否可以在其中嵌入html:
<div>
<h1>"Hello World"?</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
我注意到在脚本编辑器中你可以去文件> new> html文件.
但我真的没有达到它的目的.
我刚试过这个:从脚本编辑器新脚本:
function addSomeHTML() {
var html = HtmlService.createHtmlOutputFromFile('cabbages')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Run Code Online (Sandbox Code Playgroud)
Cabbages是一个html文件:
<div>
<h1>Hello, world!</h1>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我保存并导航到我的工作表.我选择了一个单元格并输入=addSomeHTML()
出现"加载"消息,然后显示空单元格.我希望看到"Hello World!" 在细胞内.
我查看了以下文档:
https://developers.google.com/apps-script/guides/html/templates#printing_scriptlets
根据firebase文档,Firebase接受所有REST API类型进行身份验证.
REST API - Firebase身份验证 换句话说,PUT/POST/GET请求都可以在HTTP请求中用于验证授权.这是示例代码:
curl \
https://SampleChat.firebaseIO-demo.com/users/jack/name.json?auth=CREDENTIAL
Run Code Online (Sandbox Code Playgroud)
Firebase文档还指出:
参数可以是您的Firebase密钥或身份验证令牌
我发送的POST请求配置如下:
var Credential = "{\"auth:\", \"zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy\"}";
https://MyFirebaseName.firebaseio.com/.json?auth="+Credential
Run Code Online (Sandbox Code Playgroud)
所以,我想使用POST请求,使用我的Firebase Secret进行服务器身份验证.我的安全规则是:
{
"rules": {
".read": true,
".write": "auth == 'zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy'"
}
}
Run Code Online (Sandbox Code Playgroud)
我从firebase返回一个错误,指出:
参数无效:" https://MyFirebaseName.firebaseio.com/.json?auth= "zXRLa7lybhJ21ZYqpXuqkT6YAYyySAGJ10lXInKy"
似乎POST请求实际上是通过Firebase,而Firebase正在读取数据.只是参数配置不正确.我已经尝试了所有我能想到的东西.我不确定CREDENTIALS应该如何配置,我找不到任何关于它的信息.也许它应该是这样的:
{"auth": "The Secret Here"}
Run Code Online (Sandbox Code Playgroud)
我只是尝试过,它不接受它.
我也尝试过使用:
{
"rules": {
".read": true,
".write": "auth !== null"
}
}
Run Code Online (Sandbox Code Playgroud)
希望无论我在REST API中发送的内容都会被接受,但这样做不起作用.
我究竟做错了什么?我已多次查看文档,在此处搜索,搜索了一个Google小组.我无法弄清楚.我需要知道在CREDENTIALS中如何发送POST数据的格式和语法.
鉴于此URL:
https://script.google.com/macros/s/MacroName/dev?theArg="69.28.15.332"
Run Code Online (Sandbox Code Playgroud)
最重要的部分是:
?theArg="69.28.15.332"
Run Code Online (Sandbox Code Playgroud)
我正在尝试将信息传递到URL中的Apps脚本.为什么我的.gsGoogle Apps脚本函数不能获取URL末尾的字符串值?这是doGet(e)功能.
function doGet(e){
var passedInIP = e.parameter.theArg;
Logger.log(passedInIP);
if (passedInIP === "69.28.15.332")
{
return HtmlService.createHtmlOutput("<h2>something</h2>")
}
};
Run Code Online (Sandbox Code Playgroud)
我在浏览器中输出了这个错误信息:
脚本已完成但未返回任何内容
在Logger.log不登录的东西.它记录[Date Time EDT] "69.28.15.332"并且日志中的值与我正在检查的值完全相同.但是平等测试失败了.
我有一个Google Sheet,它运行一些Apps Script服务器代码以连接到SQL服务器.我想在刷新数据时在模式对话框中显示消息"loading ...".我可以弹出模态,但是我想在代码完成后立即自动关闭对话框.
我设置的一个例子是:
function testpop () {
var htmlOutput = HtmlService
.createHtmlOutput('<p> This box will close when the data has finished loading.</p>')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(250)
.setHeight(200);
SpreadsheetApp.getUi().showModalDialog(htmlOutput, 'Loading...');
sleep(1000);
//close the dialog
}
Run Code Online (Sandbox Code Playgroud)
我知道这可以在客户端调用,但是需要在GS中处理它,以便在代码完成时触发它.