我正在从 Google 网站构建一个社区驱动的网站(我知道这是一个糟糕的选择,我在这件事上别无选择)并且大部分功能都内置在 Google Apps 脚本中(读取/写入外部数据库并处理数据的显示方式)。在各种问题中,我发现了一个一直让我感到困惑的问题。
我通常将我的 GAS 项目组织成 Javascript、HTML 和 CSS(Code.gs、HTML.html 和 CSS.html)。我利用 jQuery 来处理很多事情(例如,单击处理程序、表单提交等)。然而,似乎我的 jQuery 和我的 Javascript 不能存在于同一个“世界”中,这里的意思是在同一个 .gs 文件中,或者如果它在 HTML 文件中存在相同的脚本标签。事实上,我无法从我的 .gs 文件中调用任何 jQuery 函数!有人能解释一下这是为什么吗?问题似乎是不包含 jQuery 库,但我找不到在 Javascript 中包含任何内容的方法(想想 C 中的 #include)。由于这是网络编程,与“普通”编程非常不同,我认为我理解这一点的部分问题来自这里。
非常感谢,谢谢。
尝试使用 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 的有限知识尽早思考解决问题的方法。
我确定这是一件简单而烦人的事情,但我似乎看不出是什么导致了错误。
只是在编写一个脚本,最终使用谷歌脚本显示来自谷歌电子表格的数据。但是,是的,似乎无法反向循环特定值。
请在下面查看我的注释代码,并提前致谢。
简单地尝试向前循环遍历数组。决定去了解基础,因为我很难过。作品。记录器显示我上升了 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) 如果可能的话,一直在查看文档。它们可行吗?
看起来他们不可用,因为试图取消投掷
ReferenceError: "Worker" is not defined. (line 17, file "code")
Run Code Online (Sandbox Code Playgroud) 我已将按钮添加到电子表格中并将脚本分配给它。有没有办法确定点击它的人的用户电子邮件?脚本编辑数据,因此onEdit触发器应该可以工作,但是Session.getActiveUser().getEmail()此触发器设置的功能无法识别用户。
谢谢
我正在寻找一种在谷歌电子表格中获取 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) 我正在使用 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 位置的值运行。 …
我需要将数据从 Drive 上传到 BigQuery。我找到了这两个解释(Upload CSV , BQ Jobs),
但是,我不想每次都重新定义架构。在手动上传中,您可以检查“自动检测”,但在脚本中我找不到如何操作。
谢谢
我已经使用 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)
我开始学习谷歌应用程序脚本并有点痛苦,: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 文档电子表格”?
谢谢!