创建到电子表格创建错误中的文件的链接的脚本“;无法转换“”;
script to create a link to a file in a spreadsheet creating error "Cannot Convert"
此脚本搜索电子表格,并根据第一列中的值将链接复制到第三列
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var searchMenuEntries = [ {name: "Search in all files", functionName: "search"}];
ss.addMenu("Search Document List", searchMenuEntries);
}
function lastValue(column) {
var lastRow = SpreadsheetApp.getActiveSheet().getMaxRows();
var values = SpreadsheetApp.getActiveSheet().getRange(column + "1:" + column + lastRow).getValues();
for (; values[lastRow - 1] == "" && lastRow > 0; lastRow--) {}
return values[lastRow - 1];
}
function search() {
// Get the active spreadsheet and the active sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// Search the files in the user's Docs List for the search term
var startRow = 2; // First row of data to process
var numRows = lastValue("A"); // Number of rows to process
// Fetch the range of cells A2:B3
var dataRange = sheet.getRange(startRow, 1, numRows)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
for (i in data) {
var files = DocsList.find(data[i].toString());
for (var j = 0; j < files.length; j++) {
if (files[j].getType() == "other"){
urlBase = "https://docs.google.com/fileview?id=";
sheet.getRange(i, 3, 1, 1).setValue(urlBase + files[j].getId());
}
}
}
}
然而,当我运行它时,我会得到以下错误:
无法在(类)中转换d59f868312238f16bd8534f61c01dd0695512d38
上面的字符串是列A中的最后一行值,我用它来检索链接(使用DocsList.fund)
有人知道我的代码出了什么问题吗?
感谢
您可以使用DriveApp。
var files = DriveApp.getFilesByName(data[i].toString());
while (files.hasNext()) {
var file = file.getNext();
if (file.getMimeType().indexOf("other") !== -1) {
Logger.log(file.getUrl());
}
}
当我运行您的代码时,我在这一行遇到了一个错误:
var dataRange = sheet.getRange(startRow, 1, numRows);
您对getRange()
使用了错误的语法。我收到了一条与你类似的错误信息。
getRange
可以采用两种类型的符号参数,A1符号或R1C1符号。
A1表示法是一个字符串,你必须把它放在引号里:
var cell = sheet.getRange("A1");
R1C1表示法采用四种设置。你有三个。R1C1表示法为:
起始行、起始列、要获取的行数、要获取的列数
getRange()
文档中没有对此进行解释,但您可以在此处查看getSheetValues()
文档中的解释:
谷歌文档-getSheetValues
我重构了整个程序,因为它有一些设计缺陷。我设法消除了错误。但是,运行一段时间后,脚本将停止表示它超过了运行脚本的时间。我按照谷歌的要求设置了睡眠功能,因为有很多请求。然而,它无法完成我在电子表格中的370行(它在318处停止)
你知道是否有任何方法可以提高我的算法的性能吗?
function search() {
// Get the active spreadsheet and the active sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// Search the files in the user's Docs List for the search term
var startRow = 2; // First row of data to process
var numRows = sheet.getMaxRows() ; // Number of rows to process
//sheet.getRange(2, 3, 1, 1).setValue(numRows.toString());
var dataRange = sheet.getRange(startRow, 1, numRows-1)
// Fetch values for each row in the Range.
var data = dataRange.getValues();
k = startRow
for (i in data) {
// sheet.getRange(2, 3, 1).setValue(data[i].toString());
var files = DocsList.find(data[i].toString()+".txt");
Utilities.sleep(1000);
for (var j = 0; j < files.length; j++) {
if (files[j].getType() == "other"){
urlBase = "https://docs.google.com/fileview?id=";
sheet.getRange(k, 8, 1, 1).setValue(urlBase + files[j].getId());
k = k+1
break;
}
}
}
}
相关文章:
- 如何在剑道UI中创建类转换效果
- 我可以将为java创建的语法文件转换为javascript的语法文件吗
- 使用带有javascript的span创建CSS转换
- 通过当前路由器's模型转换为Ember.js中创建的对象
- 为什么微软开发了一种名为Typescript的新语言,而不是创建C#到Javascript的转换程序
- 创建谷歌图表;转换为图像服务器端
- Codrops页面转换.如何创建单独的按钮,而不是列表项目的效果
- 需要创建一个函数,将我自己创建的范围对象转换为字符串
- 我正在尝试创建一个带有数据转换的按钮,但不起作用
- 试图创建一个Javascript数组,我可以将其转换为Json
- 创建/使用简单的美制到公制转换器的问题.(HTML/JavaScript)函数未启动
- 将画布动画转换为requestAnimationFrame将创建无限循环
- 在javascript中创建元素时,CSS转换规则固有地被覆盖
- 将JSON字符串转换为JavaScript对象,然后创建一个HTML表
- 创建到电子表格创建错误中的文件的链接的脚本“;无法转换“”;
- 使用 ExcelJS 创建转换流以编写 xlsx
- 在Three JS中创建转换管道
- 谷歌分析事件目标不创建转换
- 如何将JSON对象(由jquery-css-parser创建)转换回有效的CSS代码
- 如何创建转换N个数组的通用Map/Zip函数