小编Fau*_* R.的帖子

从Gmail原始内容中解析内联图像

Gmail邮件getAttachments功能未返回内联图片 - 请参阅问题2810 https://code.google.com/p/google-apps-script-issues/issues/detail?id=2810

我需要这样做,所以我编写了下面的代码,以消息原始内容解析blob格式的内嵌图像,事先知道消息中的图像cid.

但是,我觉得这个解析在我找到base64图像内容中的第一个和最后一个字符的方式上非常脆弱,不是吗?

有没有更好的方法呢?

此致,Fausto

var rawc = message.getRawContent();
var b64c1 = rawc.lastIndexOf(cid) + cid.length + 3; // first character in image base64
var b64cn = rawc.substr(b64c1).indexOf("--") - 3; // last character in image base64
var imgb64 = rawc.substring(b64c1, b64c1 + b64cn + 1); // is this fragile or safe enough?
var imgblob = Utilities.newBlob(Utilities.base64Decode(imgb64), "image/jpeg", cid); // decode and blob
Run Code Online (Sandbox Code Playgroud)

google-apps-script

6
推荐指数
1
解决办法
1456
查看次数

从图书馆打开菜单上的电子表格

我将在几个用户之间分发一个带有onOpen菜单的电子表格.我想在库中保留菜单定义和功能,因此如果我添加一些菜单选项或更新某些功能,使用该电子表格的每个人都将自动更新.

到目前为止,在电子表格脚本上我只有这个简单的代码:

function onOpen() {
  myLib.loadMenu();
}
Run Code Online (Sandbox Code Playgroud)

菜单加载电子表格没有问题,但无论我如何命名菜单上的调用和实际功能(有或没有myLib.)我总是得到一个错误"使用选项时无法找到脚本函数doSomething"从那个菜单.

有关如何命名菜单中的函数调用和库中的实际函数的任何想法,以便使用此方法.

谢谢,福斯托

编辑-1:让我提供更多细节和示例代码

我的目标是能够从库中为该电子表格菜单添加更多选项,而无需更新每个用户的电子表格.

这是包含在电子表格脚本中的示例代码,尚未使用任何库,它可以正常工作

function onOpen() {
  testMenu();
}
function testMenu() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Testing', [
      { name: 'Do Something #1', functionName: 'someFunction1' },
      null,
      { name: 'Do Something #2', functionName: 'someFunction2' } ]);
}
function someFunction1() {
  SpreadsheetApp.getActiveSheet().getRange("A1").setValue("Hello from someFunction1");
}
function someFunction2() {
  SpreadsheetApp.getActiveSheet().getRange("A2").setValue("Bye from someFunction2");
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是获得相同的功能,但在电子表格脚本和库之间拆分代码,如下所示

在电子表格脚本上

function onOpen() {
  xsLib.testMenu();
}
Run Code Online (Sandbox Code Playgroud)

在图书馆

function testMenu() {
  SpreadsheetApp.getActiveSpreadsheet().addMenu(
    'Testing', [
      { name: 'Do Something #1', functionName: 'someFunction1' }, …
Run Code Online (Sandbox Code Playgroud)

google-apps-script

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

使用Google Apps脚本构建的Web应用程序的URL映射?

使用Google Apps脚本构建的Web应用程序具有以下链接:

https://script.google.com/a/macros/mydomain.com/s/AKfy...iXUrQfobe6/exec

任何想法如何将这样的Url映射到友好的,如:

app.myapp.mydomain.com

google-apps-script

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

获取当前页面网址

在使用GAS HtmlService的Web应用程序上,我需要获取当前页面的URL以在模板中构建新链接.

该网络应用程序将在Google网站页面(GAS作为小工具)中运行,但也可以独立运行

我正在尝试"var pageUrl = document.location.href",然后在Html模板中使用pageUrl,如下所示.我知道这是错的,但我迷路了,抱歉.

<a href="<?= pageUrl + "?item=xyz" ?>" >Item xyz link</a>
Run Code Online (Sandbox Code Playgroud)

谢谢,福斯托

google-apps-script

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

在处理函数中使用和修改全局变量

大家都好,

我可以在处理函数中使用全局变量,但是我不能在函数内"全局"修改它们.

在下面的代码中,在第一次单击后,它将显示数字1001(处理程序读取,递增并显示正确的结果).但是,任何进一步的点击总是会显示1001,因此处理程序会继续读取原始的globalVar值:它不会像我期望的那样被修改.

我能做些什么来解决这个问题?

var globalVar = 1000;

function testingGlobals() {
  var app = UiApp.createApplication();
  var doc = SpreadsheetApp.getActiveSpreadsheet();
  var panel = app.createVerticalPanel().setId('panel');
  app.add(panel);
  panel.add(app.createButton(globalVar).setId("globalVar").addClickHandler(app.createServerHandler("chgGlobal").addCallbackElement(panel)));
  doc.show(app)
}

function chgGlobal(e) {
  var app = UiApp.createApplication();
  globalVar++;
  app.getElementById("globalVar").setText(globalVar);
  return app;
}
Run Code Online (Sandbox Code Playgroud)

google-apps-script

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

如何将favicon.ico附加到使用Google Apps脚本构建的Web应用程序?

关于如何将favicon.ico附加到使用Google Apps脚本构建的Web应用程序的任何想法?

编辑1:使用UiApp

谢谢,福斯托

google-apps-script

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

如何使用DocsList将文件复制到特定文件夹?

我正在尝试使用此代码将Google电子表格复制到特定文件夹中

var targetFolder = DocsList.createFolder("Testing");
var mainDocBlob = DocsList.getFileById("docId").getBlob();
var newMainDoc = targetFolder.createFile(mainDocBlob);
Run Code Online (Sandbox Code Playgroud)

但是生成的文件是Pdf文件,而不是源代码的电子表格.

如何使用DocsList正确执行此操作并始终获取与源相同类型的文件.

谢谢

google-apps-script

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

标签 统计

google-apps-script ×7