小编Ala*_*lls的帖子

Google应用脚本:如何删除Google云端硬盘中的文件?

如何编写删除文件的Google Apps脚本?

这找到文件:

var ExistingFiles = DocsList.find(fileName);
Run Code Online (Sandbox Code Playgroud)

DocsList.deleteFile删除文件不存在.

有没有办法将这些文件移动到另一个文件夹或垃圾箱?

我要考虑的另一种解决方法是能够覆盖具有相同名称的现有文件.

目前,当我想创建一个已在MyDrive中使用的名称的文件时,它会创建一个具有相同名称的第二个文件.我想保留1个文件(新文件保留,旧文件丢失).

file delete-file google-apps-script google-drive-api

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

在Google Apps脚本网络应用中使用Facebook API?

我正在尝试使用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一起玩得好吗?

google-apps-script facebook-graph-api facebook-apps

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

Google Spreadheets Scripts:检查单元格是否为空

我想只在单元格为空时才在单元格中输入变量.但是,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)

spreadsheet cell google-sheets google-apps-script

14
推荐指数
3
解决办法
5万
查看次数

使用Google Advanced Drive服务在Apps脚本文件夹中创建新文件

有四种方法可以创建新文件:

  • DocsList - 在主列表中显示为DocsList.内置于Apps脚本.
  • DriveApp - 在主列表中显示为驱动器.内置于Apps脚本.
  • Drive API - 在主列表中也显示为Drive. 必须添加到Apps脚本.
  • DocumentApp - 在主列表中显示为文档.内置,但只创建一个文档文件.

它们都被称为服务.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-script google-drive-api

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

Apps脚本中的getActive()和getActiveSpreadsheet()有什么区别?

这些方法与Google Apps脚本中的SpreadSheetApp类有何不同?

两者都返回"当前活动的电子表格,如果没有则返回null".它们之间的区别究竟是什么?我什么时候应该使用每一个?

google-sheets google-apps-script

12
推荐指数
1
解决办法
1067
查看次数

Google电子表格范围名称

在Google Docs Spreadsheets中,可以使用范围名称在单元格范围上放置标签,以使公式更清晰.在大多数公式中,可以使用范围C:C表示整个C列,而C2:C表示包括C2之后的整个C列.

有没有办法创建相同性质的范围名称?当我尝试C:C或C2:C或Sheet!C:C或'Sheet'时!C:CI总是会出现错误"您指定的范围不是有效的范围格式".我希望扩展范围名称,因为我的表单会在我的电子表格中添加行.谢谢.

google-sheets named-ranges

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

在谷歌工作表中嵌入html

我想在电子表格的顶部显示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

https://developers.google.com/apps-script/guides/dialogs

google-sheets google-apps-script

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

Firebase服务器端使用firebase密钥使用HTTP POST请求进行身份验证

根据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数据的格式和语法.

authentication firebase

9
推荐指数
1
解决办法
9705
查看次数

如何获取传递给Google Apps脚本的URL字符串参数doGet(e)

鉴于此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-apps-script

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

自动关闭模式对话框 - 完成服务器代码后,关闭Google电子表格中的对话框

我有一个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中处理它,以便在代码完成时触发它.

google-sheets showmodaldialog google-apps-script

9
推荐指数
2
解决办法
5006
查看次数