标签: google-apps-script

从 .gs 文件调用 jQuery 函数(Google Apps 脚本)

我正在从 Google 网站构建一个社区驱动的网站(我知道这是一个糟糕的选择,我在这件事上别无选择)并且大部分功能都内置在 Google Apps 脚本中(读取/写入外部数据库并处理数据的显示方式)。在各种问题中,我发现了一个一直让我感到困惑的问题。

我通常将我的 GAS 项目组织成 Javascript、HTML 和 CSS(Code.gs、HTML.html 和 CSS.html)。我利用 jQuery 来处理很多事情(例如,单击处理程序、表单提交等)。然而,似乎我的 jQuery 和我的 Javascript 不能存在于同一个“世界”中,这里的意思是在同一个 .gs 文件中,或者如果它在 HTML 文件中存在相同的脚本标签。事实上,我无法从我的 .gs 文件中调用任何 jQuery 函数!有人能解释一下这是为什么吗?问题似乎是不包含 jQuery 库,但我找不到在 Javascript 中包含任何内容的方法(想想 C 中的 #include)。由于这是网络编程,与“普通”编程非常不同,我认为我理解这一点的部分问题来自这里。

非常感谢,谢谢。

google-apps-script

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

Google Apps 脚本的内容服务返回 HTML 而不是 JSON

尝试使用 Content Service API 并且示例在应该返回 JSON 时返回 HTML,我做错了什么?

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

function doGet(request) {
  var events = CalendarApp.getEvents(
    new Date(Number(request.parameters.start) * 1000),
    new Date(Number(request.parameters.end) * 1000));
  var result = {
    available: events.length == 0
  };
  return ContentService.createTextOutput(JSON.stringify(result))
    .setMimeType(ContentService.MimeType.JSON);
}
Run Code Online (Sandbox Code Playgroud)

来自另一个文件的 GAS 试图发出请求:

function myFunction() {
  var url = "published URL";
  url+="?start=1325437200&end=1325439000";

  var options = {
    method:"get"
  }
  var response = UrlFetchApp.fetch(url,options).getContentText();
  response = JSON.parse(response); //error, unexpected token <
}
Run Code Online (Sandbox Code Playgroud)

javascript fetch google-apps-script

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

向后循环数组时出错

我开始做一些事情,并且很早就遇到了障碍,试图以我对 javascript 的有限知识尽早思考解决问题的方法。

我确定这是一件简单而烦人的事情,但我似乎看不出是什么导致了错误。

只是在编写一个脚本,最终使用谷歌脚本显示来自谷歌电子表格的数据。但是,是的,似乎无法反向循环特定值。

请在下面查看我的注释代码,并提前致谢。

简单地尝试向前循环遍历数组。决定去了解基础,因为我很难过。作品。记录器显示我上升了 1

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=0;i < values.length;i++){
Logger.log([i]);

}
}
Run Code Online (Sandbox Code Playgroud)

与上面相同,除了我试图反向遍历数组。工作,但到目前为止我们只问它我们在循环的哪个部分。

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=values.length;i > 0 ;i--){
Logger.log([i]);

}
}
Run Code Online (Sandbox Code Playgroud)

准时系好你的裤子,因为我们正在向数组请求数据,向前循环。有用。它返回数组中每个条目的整行

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();


for(i=0;i < values.length;i++){
Logger.log([i]+" " + values[i]);

}
}
Run Code Online (Sandbox Code Playgroud)

让我们月球漫步并再次尝试反向循环。因为我很坏,我很坏,嘻嘻,哇哦。有用 :)

function getInfo() {
var sheet = SpreadsheetApp.openById("ID HERE").getSheetByName("Sheet1");
var values …
Run Code Online (Sandbox Code Playgroud)

javascript arrays google-sheets google-apps-script

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

我可以在 Google Apps 脚本中使用 HTML5 网络工作者吗?

如果可能的话,一直在查看文档。它们可行吗?

看起来他们不可用,因为试图取消投掷

ReferenceError: "Worker" is not defined. (line 17, file "code")
Run Code Online (Sandbox Code Playgroud)

html worker web-worker google-apps-script

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

获取点击电子表格中按钮的用户

我已将按钮添加到电子表格中并将脚本分配给它。有没有办法确定点击它的人的用户电子邮件?脚本编辑数据,因此onEdit触发器应该可以工作,但是Session.getActiveUser().getEmail()此触发器设置的功能无法识别用户。

谢谢

google-sheets google-apps-script

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

使用谷歌脚本将 2 列放入一个多维数组中

我正在寻找一种在谷歌电子表格中获取 2 列并将它们合并到一个数组中的方法,希望我可以获取这 2 列并setValues在新工作表上使用。

为什么?

我最终会使用 2 个不同的工作表,并且基本上进行了大规模的查找,并将所有结果和所需的列传输到一个新的工作表中。我可以得到完整的dataRange,循环遍历每个数组,获取我想要的值并将它们推送到一个新数组。但是有没有更简单的方法呢?如果我只能查看 row1 并获取标题及其索引,我是否可以将所有列 A 和列 D 放入多维数组中?

例子

标题1 | H2 | H3

我想要 H1 和 H3 以及它们的行,这样我就可以将它们放在新的工作表中

多维数组:

[ [H1, H3], [数据H1,数据H3] ]

当前代码

  var freqArr = new Array(); //Array with sheet data
  var myArray = new Array(); //Blank array to house header index
  var freqSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('KEY_test_test');
  var freqData = freqSheet.getDataRange(); //all data
  var freqNumRows = freqData.getNumRows(); //number of rows
  var freqNumCol = freqData.getNumColumns(); //number of …
Run Code Online (Sandbox Code Playgroud)

javascript arrays google-sheets google-apps-script

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

Google 应用程序脚本 - 循环中断

我正在使用 Google 应用程序脚本,似乎搞砸了我的一个 for 循环。我确定我在这里遗漏了一些微不足道的东西,但我似乎无法发现它。

代码片段:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var lastRow = sheets[3].getLastRow();
var zw = sheets[3].getRange(2, 1, lastRow - 1, 26).getValues();
for (var j = 0; j < zw.length; ++j) {
    if (zw[j][9] === 'Yes') {
        var masterEmail = [];
        var firstLetterLastName = [];
        var first2Letter = [];
        var masterEmail.push(zw[j][22]);
        var firstLetterLastName.push(zw[j][1].charAt(0).toLowerCase());
        var first2Letter.push(zw[j][1].charAt(0).toLowerCase() + zw[j][1].charAt(1).toLowerCase());
        //The rest of the function follows...
    }
}
Run Code Online (Sandbox Code Playgroud)

什么不工作:

for 循环不会增加。在调试器中运行代码时,var j 的值保持为 0.0,而函数的其余部分仅根据 zw 的 0 位置的值运行。 …

javascript loops for-loop google-sheets google-apps-script

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

BigQuery - 通过应用程序脚本上传带有架构自动检测的 csv

我需要将数据从 Drive 上传到 BigQuery。我找到了这两个解释(Upload CSV , BQ Jobs),

但是,我不想每次都重新定义架构。在手动上传中,您可以检查“自动检测”,但在脚本中我找不到如何操作。

谢谢

google-apps-script google-bigquery

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

Bootstrap 表单文本在 Google Apps Script htmlservice 中的移动设备上没有响应

我已经使用 Google Apps Script HTMLService 和 Bootstrap CDN 开发了 webapp。该设计适用于台式机和笔记本电脑。我设计了 3 列形式。

它会在预期的移动设备中自动转换为单列。但是文本和徽标看起来很小,而且看起来不像引导程序优化。请在笔记本电脑和手机上查看此链接:https : //script.google.com/macros/s/AKfycbyVBzSQxrsKXDlAVPdIUHWl1g406ucRfKghfzFY7FVKvL8ji9bS/exec

`

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Index');
  return template.evaluate()
      .setTitle('Responive Form')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Run Code Online (Sandbox Code Playgroud)

`

function doGet(e) {
  var template = HtmlService.createTemplateFromFile('Index');
  return template.evaluate()
      .setTitle('Responive Form')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
Run Code Online (Sandbox Code Playgroud)

css google-apps-script twitter-bootstrap

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

Google Apps Scripts:如何将文件从根目录保存到特定文件夹?

我开始学习谷歌应用程序脚本并有点痛苦,:S。

所以,当我运行这个函数时:

function importXLSX(){
  var files = DriveApp.getFolderById('0B5HXuvZIdqQ3bWlKNXFXZzhIcmc').searchFiles('title contains ".xlsx"');
    while(files.hasNext()){
      var xFile = files.next();
      var name = xFile.getName();
         if (name.indexOf('.xlsx')){ 
            var ID = xFile.getId();
            var xBlob = xFile.getBlob();
            var newFile = { title : name+'_converted',
                 key : ID,
            }
            file = Drive.Files.insert(newFile, xBlob, {
            convert: true
            });
         }
       }
    }
Run Code Online (Sandbox Code Playgroud)

转换后的文件设置在 Drive 的根目录中,但我希望如此

当我运行代码时,文件保存在根文件夹中,但我希望它们保存到特定文件夹中,例如“Converteds”,所以如果有人知道如何解决它,我将不胜感激!

这是有关该功能的参考链接:将文件夹中可用的所有 xls 文件转换为“Google 文档电子表格”?

谢谢!

google-apps-script google-drive-api google-sheets-api

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