我希望这不会让我失分,但我一直在到处寻找,但找不到答案:
有没有办法在新副本中保留受保护的范围?
如果不可能,也许使用
var protection = spreadsheet.getRange('D1:G9').protect();
Run Code Online (Sandbox Code Playgroud)
在新副本上?
但是后来我不知道如何将它分配给新副本,因为脚本将在原始电子表格中,并且电子表格的副本在创建之前没有 Id ...
我们可以将 google app-script 代码发布到 chrome 扩展工具中吗?到目前为止,我们从 app-script 开发了一个 web 应用程序,它作为一个 web 应用程序工作。需要做什么才能将其从 google app-script Editor 转换为 chrome 扩展。对有价值的建议表示感谢。
大多数附加组件都很好,但是每当我按 Enter 键时(在我看来,这是提交表单的最常见方式,例如登录表单),但它所做的只是空白。
我试过onkeydown像这样链接脚本:
<div onkeydown="handle(event)">blagh blagh blagh</div>
Run Code Online (Sandbox Code Playgroud)
但我仍然得到相同的结果:
<html>
<form id='myForm' style="font-family:Georgia;">
<table>
<tr><td><h2>Enter your Password</h2></td></tr>
<tr><td><p>DO NOT HIT ENTER ON YOUR KEYBOARD!!!!!</p></td></tr>
<tr><td><input name='password' type='password' value="" onkeypress="handle(event)"></td></tr>
<tr><td><div id="submitbuttcontainer"><img id="submitloader" style="display:none;" src='https://lh6.googleusercontent.com/-S87nMBe6KWE/TuB9dR48F0I/AAAAAAAAByQ/0Z96LirzDqg/s27/load.gif' /><input id="submitbutt" type='button' onclick='showWorking();google.script.run.withSuccessHandler(onSuccess).decodeForRequest(document.getElementById("myForm"));' name="Submit" value="Submit"></div></td></tr>
</table>
</form>
<script>
function onSuccess(obj) {
document.getElementById('submitbutt').style.display="block";
document.getElementById('submitloader').style.display="none";
if(obj.status == 'success') {
google.script.host.closeDialog();
browser.msgbox('Access Granted', browser.buttons.OK)
}
else {
browser.msgbox('ALERT!!','!OOF!','Incorrect Password. Please retry', browser.buttons.OK);
}
}
function showWorking() {
document.getElementById('submitbutt').style.display="none";
document.getElementById('submitloader').style.display="block";
}
function handle(e){
if(e.keyCode === 13)
document.getElementById('submitbuttcontainer').click(); …Run Code Online (Sandbox Code Playgroud) 我创建了一个 scrpit 来将从 Excel 复制的时间转换为正确的格式。
因为当我将 12.30、09.34、07.40 或 08.00 粘贴到 Google 表格中时,它们最终会变成 12.3、9.34、7.4 和 8。某些表事件包含时间格式,如 1230、934 或 740,因此我也必须解决该问题。这是我的代码。
function onEdit(event) {
if (event.range.getColumn() == 3 ) {
for(var i = 1; i<= range.getNumRows() ; i++){
var r = range.getCell(i, 1);
var rvalue = r.getValue();
var rvalues = rvalue.toString();
var rvalength = rvalues.length;
if (rvalue != ""){
if (rvalength == 3) {
if (parseInt(rvalues.substring(0,2))>24) {
r.setValue(rvalues.substring(0,1)+"."+rvalues.substring(1,3));
}
else
{
r.setValue(rvalues.substring(0,2)+"."+rvalues.substring(2,3));
}
}
else if ( rvalength == 4 ) {
r.setValue(rvalues.substring(0,2)+"."+rvalues.substring(2,4)); …Run Code Online (Sandbox Code Playgroud) 大家早上好。我编写了一个简短的脚本,它根据电子表格中的行批量创建 [单页] Google 幻灯片。在每次创建的循环中,我想在 Google Drive 中创建幻灯片的 PNG(或在用户的桌面上下载)。这些图片应该与用户单击文件>下载>PNG 具有相同的规格 - 沉重的小文本需要完整的投影仪高清 - 所以我不相信我可以使用似乎限制为 1600 像素的“缩略图”功能。
我下面的代码生成错误“不支持从文本/html 转换为图像/png” - 所以我不确定这是 API 的限制还是我的编码问题。先感谢您。
var options =
{
"contentType" : "image/PNG"
};
var url = 'https://docs.google.com/presentation/d/' + presentationCopyId + '/export/PNG';
var response = UrlFetchApp.fetch(url, options);
var image = response.getAs(MimeType.PNG);
image.setName(SlideName);
DriveApp.createFile(image);
Run Code Online (Sandbox Code Playgroud) 我需要遍历源文件夹中的每个 .CSV 文件,并将每个文件中的数据复制到一个 Google Sheets 文件中的新工作表/标签中。我找到了一些与此主题相关的答案,但是我在两个代码集上都遇到了错误。这是我试图从中构建解决方案的代码:
function appendCSV() {
var file = DriveApp.getFilesByName("myCSVFile.csv").next();
var csvData = Utilities.parseCsv(file.getBlob().getDataAsString());
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow=sheet.getLastRow();
sheet.getRange(lastRow, 1, csvData.length, csvData[0].length).setValues(csvData);
}
Run Code Online (Sandbox Code Playgroud)
这是我遇到的第一个错误:
无法检索下一个对象:迭代器已结束。(第 2 行,文件“代码”)
我可以.next()从第 2 行删除该方法,然后出现另一个错误:
类型错误:在对象 FileIterator 中找不到函数 getBlob。(第 3 行,文件“代码”)
任何人都可以确定这里可能出了什么问题吗?
我有一个在单元格中格式化文本的谷歌工作表。一些文本有颜色并且是粗体的。我使用谷歌脚本在单元格中添加新内容。当我运行脚本时,会添加新内容,但会删除旧内容的格式。
1)如何在执行我的脚本时保持旧内容的格式。2)我想让新内容加粗和着色。如何格式化添加到单元格的新内容?
这是执行脚本之前我的单元格的内容
这是我的脚本:
function CreateIssue() {
var spreadsheet = SpreadsheetApp.getActive();
var cell = spreadsheet.getCurrentCell();
var oldContent = cell.getValue();
var newContent ='Group:\n\nDescription:\n\nExpected Results:\n\nActual Results:\n\nTest
Results:\n\nTest Data:';
var space = " ";
cell.setValue(newContent + space + oldContent);
Run Code Online (Sandbox Code Playgroud)
这是执行脚本后我的单元格的内容
如您所见,旧内容的格式已清除。
我知道在Google Drive API 中,您可以请求获取某个范围内的文件的一部分:Range: bytes=500-999,但我正在查看Google Apps Script 参考,但似乎无法在其中找到等效的功能。
有没有人有任何想法?
我有一个函数可以复制现有文档(模板),然后通过将标题名称与文档中列出的标签进行匹配来动态合并数据。该函数运行没有任何问题,但现在每当它尝试合并时突然我都会收到一条错误消息。任何人都可以让我深入了解问题可能是什么?
错误消息:异常:无效参数:替换
奇怪的是,它并没有阻止信息合并,但错误确实阻止了函数完成其他任务。
与错误一致
headers.forEach(function(e){
body.replaceText("<<"+e+">>",data[e]);
return;
});
Run Code Online (Sandbox Code Playgroud)
整个代码:
function documents(sheet, data){
var headers = Object.keys(data[0]);
var docsToMerge = data.map(function(e){
var name = e.location +" - "+e.employeeLastName+", "+e.employeeFirstName+" - "+e.docName+" "+Utilities.formatDate(new Date(e.effectivePayDate), "UTC-4", "M/d/yy");
var newDoc = DriveApp.getFileById(e.template).makeCopy(name, DriveApp.getFolderById(e.folderId));
e.documentLink = newDoc.getUrl();
e.documentId = newDoc.getId();
return e;
});
docsToMerge.forEach(function(e){
mergeDocuments(e, headers, signatureFolderId);
});
}
function mergeDocuments(data, headers){
var id = DocumentApp.openByUrl(data.documentLink).getId();
var doc = DocumentApp.openById(id);
var body = doc.getBody();
headers.forEach(function(e){
body.replaceText("<<"+e+">>",data[e]);
return;
});
doc.saveAndClose();
return;
}
Run Code Online (Sandbox Code Playgroud)