标签: google-apps-script

OAuth 同意屏幕 - 删除应用程序徽标的能力:旧解决方案不再有效

问题:如何删除应用程序徽标。

解决方案:此答案中的先前解决方案/sf/answers/4001760591/不再有效。

Google 将 的格式更改"iconUrl""icon",现在使用 -Base64编码的数据流,例如"icon":"iVBORw0KGgoAAAAN...,而不是以前写为 的图像 URL "iconUrl":"https://..."

我试过"icon":""许多Base64编码的值一样"icon":"IA""icon":"Lw"和一些其他-没有成功。我收到控制台消息,例如

为了 "icon":""

{
  "error": {
    "code": 400,
    "message": "The request failed because one of the field of the resource is invalid.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.PreconditionFailure",
        "violations": [
          {
            "type": "client_auth_config",
            "subject": "?error_code=9&error_field_name=UpdateIconRequest.icon&error_field_value=%3CByteString@3eeee81e+size%3D0+contents%3D%22%22%3E"
          }
        ]
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

或者

{
  "error": {
    "code": 400,
    "message": "Request contains an …
Run Code Online (Sandbox Code Playgroud)

google-api google-apps-script google-oauth google-cloud-platform google-workspace

13
推荐指数
1
解决办法
2523
查看次数

如何使用谷歌应用脚​​本将一行谷歌电子表格中的行复制到另一个谷歌电子表格?

您好我想使用谷歌应用脚​​本将一个电子表格中的特定行复制到另一个电子表格.任何人都可以帮我解决这个问题.

javascript google-sheets google-apps-script

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

自动重定向到页面

在按钮单击处理程序中,我正在创建一个新的网页,如下所示:

var page = SitesApp.getPageByUrl(url).createPageFromTemplate(title, name, template);
Run Code Online (Sandbox Code Playgroud)

我想将用户自动重定向到该页面.

我无法找到太多信息,可以这样做吗?

google-sites google-apps-script

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

如何针对Google Apps Script ContentService生成XHR/ajax请求?

我有一个简单的谷歌Apps脚本是contentService的发射类似"世界,你好星期六2012年7月14日十四时17分21秒GMT + 1000(EST)"的网址是一个字符串https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec,它对匿名开放.随意点击它.代码是:

function doGet() {
  var output = ContentService.createTextOutput()
      .setMimeType(ContentService.MimeType.TEXT)
      .setContent("Hello world " + new Date());
  Logger.log(output.getContent());
  return output;
}
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中访问URL时,它会按预期返回字符串(pass.png).当我在XHR(ajax调用)中使用相同的URL时,它会因空错误而失败.在Chrome中的开发者工具中,重定向是"(已取消)"(fail.png).以下是重现失败的代码:

<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc() {
  xhr=new XMLHttpRequest();
  xhr.onreadystatechange=function() {
  if (xhr.readyState==4 && xhr.status==200) {
    document.getElementById("myDiv").innerHTML=xhr.responseText;
    }
  };
  xhr.open("GET","https://script.google.com/macros/s/AKfycbxbFFG95mi8PWVNCE8366XaxnXQrt6p7p3OWbclXch_bbWczQ/exec",true);
  xhr.send();
}
</script>
</head>
<body>

<h2>Using the XMLHttpRequest object</h2>
<div id="myDiv"></div>
<button type="button" onclick="loadXMLDoc()">Get Content via XHR</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

直接要求: DIrect requestpass.png XHR请求: 在此输入图像描述 我的问题(希望足够具体):如何从example.com上的普通旧网页进行XHR调用,从匿名Google Apps脚本ContentService脚本获取内容?

ajax xmlhttprequest cors google-apps-script

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

Google Apps脚本电子表格评论自动化

今天我有一个关于Google Apps脚本的问题,特别是针对Spreadsheets.我已经看过这里的文档(是的,电子表格中的工作上的文档),但我找不到我想要的东西.这是sitch:

1.)当在Google电子表格中编辑单元格时,我使用该函数设置了一个注释函数(是的,它说的是cell.setComment(),但实际上它创建了一个注释.感谢一致,谷歌!):

function onEdit() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getActiveSheet();
var cell = sheet.getActiveCell();
cell.setComment("Last modified: + (new Date()));
}
Run Code Online (Sandbox Code Playgroud)

2.)截至2012年9月5日,评论被" 评论 ""替换"了?也许?我宁愿使用那些.

3.)对于两种类型的"单元格表示法",仅存在用于设置注释/注释的功能,而不存在ADD(根据文档).

4.)我想引用或编写一个能够添加新注释/注释的函数(最好是注释,它们更容易阅读),而不是设置注释/注释.

5.)您可以通过电子表格中的GUI手动添加注释/注释(右键单击一个单元格并选择"插入注释"或"插入注释".因为这些右键单击功能存在让我相信我们可以编写一个脚本来做同样的事情,但是在编辑单元格时会自动调用它.

6.)此功能将用于跟踪单元格修订历史记录.我知道我可以创建一个新的电子表格并轻松地将修订历史记录发送到新的电子表格,但考虑到我有10个需要跟踪的电子表格,我宁愿没有10个新的电子表格来跟踪历史记录.将它保存在同一个电子表格中会使事情变得简单.

如果有人能帮助我,我将不胜感激!

comments google-sheets google-apps-script

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

Google Apps脚本格式日期使用用户的时区而非GMT

我有一行设置单元格中的当前日期和时间:

sheet.getRange(1,1).setValue(new Date());
Run Code Online (Sandbox Code Playgroud)

然后我有一行根据该单元格的值创建格式化日期:

var addedDate = sheet.getRange(1,1).getValue();
var addedTime = Utilities.formatDate(addedDate, "GMT", "hh:mm a");
Run Code Online (Sandbox Code Playgroud)

结果addTime似乎在GMT时区,我需要它在用户的时区.它通常是美国东部时间(-0500),但如果我只是从那个时间减去5个小时,那么不考虑夏令时(-0400).

我在这里查看了formatDate的文档:https://developers.google.com/apps-script/reference/utilities/utilities#formatDate (Date,String,String )

这里链接到官方的Java SimpleDateFormat类文档:http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

...但我无法在那里找到有效时区列表来替换GMT.

javascript time timezone google-apps-script timezone-offset

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

如何通过App Script在特定文件夹中创建电子表格

任何人都可以帮助我

我想在特定文件夹中通过App Script创建一个电子表格.怎么做.

目前我正在做如下:

var folder = DocsList.getFolder("MyFolder");
var sheet = SpreadsheetApp.create("MySheet");
var file = DocsList.getFileById(sheet.getId());
file.addToFolder(folder);
file.removeFromFolder(file.getParents()[0]);
Run Code Online (Sandbox Code Playgroud)

它不工作.......

google-apps-script

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

如何使用列标题引用Google Apps脚本电子表格中的单元格

我有几个Google表格,我连接并更新它们之间的单元格.现在我必须使用R1C1或A1类型引用来定义基于特定列获取或设置单元格.

如果添加了新列,则所有这些引用现在都已关闭.

每个工作表中的第一行将列标题作为这些单元格中的值.

我可以以[columnHeader] 5的格式引用该列中第五行的单元格的单元格吗?

我想将每个单独的列标题设置为"命名范围",但我仍然坚持能够使用[命名范围] 5引用单元格.

我想我可以使用一些动态定义100个变量到当前列号(R1C1)格式(在所有工作表中)的方法,然后尝试在我的单元格引用中使用那些伪标题变量.但是我可能每天都会运行100次脚本,这种可怕的低效率会伤害我的工程师.

提前致谢.

夹头

google-sheets google-apps-script

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

如果var是数字,对于脚本

我需要运行一个包含逻辑的脚本:If isNumber,Then DoSomething.

我运行其他如果然后测试,如果为空,如果单元格包含"x".它应该很简单,但我找不到解决方案.我试过getNumberFormat,innum,isnumber等.

function ifIsNumber() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();

var substring1 = s.getRange("A1").getNumberFormat();

s.getRange("B1").setValue(substring1);

}
Run Code Online (Sandbox Code Playgroud)

对于包含数字和文本的两个单元格,此代码检查单元格A1并在单元格B1中返回字符串"0.###############".如何识别哪些单元格是数字?

google-apps google-sheets google-apps-script

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

如何使用脚本在Google表格中生成范围ID超链接#rangeID = XXXXXXXXXX?

最近,Google添加了一个功能,您可以在其中超链接到特定的单元格,这很棒.为此,您可以使用特定单元格上的"插入链接"功能,然后从下拉菜单中单击"选择要链接的单元格范围",然后选择您要添加的单元格或范围要链接到.通过这样做,Google生成了一个非常方便(和动态)的十位"范围ID".

它看起来像这样:= HYPERLINK("#rangeid = 1234567890","link")

但是,我无法弄清楚如何使用脚本创建它.

我觉得这个函数不存在似乎很奇怪,因为它可以手动完成.

我可以使用以下代码生成工作表ID,在创建在页面之间跳转的超链接时非常方便:

var ss = SpreadsheetApp.getActive(); 
var sheet1 = ss.getSheetByName(name); 
var gid = sheet.getSheetId();
sheet2.getRange("A1").setFormula('=hyperlink("#gid='+gid+'","'name'")');
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码创建指向特定单元格的链接,但它不是动态的,并且一旦将行/列插入到工作表中就会中断:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var range = ss.getRangeByName("A10");
var sheetID = range.getSheet().getSheetId();
var rangeCode = range.getA1Notation();
sheet2.getRange("J10").setFormula('=hyperlink("https://docs.google.com/spreadsheets/d/'+ss.getId()+'/edit#gid='+sheetID+'&range='+rangeCode+'","link")');
Run Code Online (Sandbox Code Playgroud)

必须有一种方法来执行类似下面的代码,但我目前找不到办法:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = ss.getRangeByName("A10");
var rangeID = range.**getRangeID()**;
sheet2.getRange("J10").setFormula('=hyperlink("#rangeID='+rangeID+'","link")');
Run Code Online (Sandbox Code Playgroud)

我知道Google Scripts的可用选项中当前不存在"getRangeID()"; 但是,有什么功能可以实现吗?如果存在这个命令,那将是非常有用的.

有帮助吗?还有另一种方法可以实现这一目标吗?

谢谢你的帮助!

google-sheets google-apps-script

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