在电子表格单元格中,我有一个指向Google文档的链接,我想恢复它以便打开Google文档并对其进行修改。所以在我的单元格中我放了这个格式https://docs.google.com/document/d/1Gb48I ......(最后没有/ edit)我试过了
var body = '=HYPERLINK("'data[n][COLUMN_URL-1]'+'/edit'")'.getBody();
var body = '=HYPERLINK("'data[n][COLUMN_URL-1]'+'/edit'")'.getBody();
// this one works but I want to use data[n][COLUMN_URL-1] because I have several Google Docs links
var body = DocumentApp.openByUrl('https://docs.google.com/document/d/1Gb48IXos......../edit').getBody();
if(body){
//edit the Google doc
如果你有想法要做什么,谢谢你,因为/ edit(第3行代码)的串联起作用
编辑:单元格未格式化(超链接)/公式我只有https:// ...
编辑2:我尝试过来自Suhail Ansari的代码,谢谢你,但我有一个错误,文件丢失了,如果你有其他想法,我没有任何日志:
var COLUMN_URL = 10 ;
function getIdFrom(url) {
var id = "";
var parts = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
if (url.indexOf('?id=') >= 0){
id = (parts[6].split("=")[1]).replace("&usp","");
return id;
} else {
id = parts[5].split("/");
//Using sort to get the id as it is the longest element.
var sortArr = id.sort(function(a,b){return b.length - a.length});
id = sortArr[0];
return id;
}
}
var sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
var numRows = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var data = sheet.getRange(1,1,numRows,lastColumn).getDisplayValues();
for(n=1;n < data.length;n++) {
var URL =data[n][COLUMN_URL-1];
Logger.log('The URL ',URL);
var id = getIdFrom(URL);
Logger.log('The ID ',id);
var body = DocumentApp.openById(id).getBody();
if(body)
{......//edit Google Doc
中的网址的10列
事实上,我有docs.google.com/open?id=1qo0B_HCbjcBrYyJ ...作为我尝试手工为第3行设置的其他行的网址,如图所示
编辑3:所以我在这一刻非常困惑,因为我在电子表格中的专栏来自一个循环,我将Google Docs的URL放在单元格中,如下所示:var trange = sheet.getRange.. trange.setValue(doc.getUrl());
现在如果我看看表格我有这种格式的链接
https://docs.google.com/open?id=1RYRVotAq6IOz5tys1krnENfgN_pU0KYuUzR24i 所以现在如果我想要取回Google Doc,我有以下内容:
// var body = DocumentApp.openByUrl('https://docs.google.com/open?id=1Xb4QjiWwpn2TJ8-9kkIhU6m1rgmb48g6xYVopN').getBody();
//var body = DocumentApp.openByUrl('https://docs.google.com/1Xb4QjiWwpn2TJ8-9kkIhU6m1rgmb48g6xYVopN/edit').getBody();
var body = DocumentApp.openByUrl('https://docs.google.com/document/d/1Xb4QjiWwpn2TJ8-9kkIhU6m1rgmb48g6xYVopN/edit').getBody();
只有第三个人工作。我做错了什么?因为我想要 for(n = 1; n&lt; data.length; n ++){...为一个循环和var URL = 数据[N] [COLUMN_URL-1];
答案 0 :(得分:1)
您可以添加一些代码以从网址获取文档ID,然后使用
打开文档DocumentApp.openById(id);
这是link。
以下示例代码在上述链接答案的帮助下:
function myFunction() {
var URL = SpreadsheetApp.getActiveSheet().getRange('A1').getValue();
var id = getIdFrom(URL);
var doc = DocumentApp.openById(id);
var body = doc.getBody();
Logger.log(body.getText());
}
function getIdFrom(url) {
var id = "";
var parts = url.split(/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/);
if (url.indexOf('?id=') >= 0){
id = (parts[6].split("=")[1]).replace("&usp","");
return id;
} else {
id = parts[5].split("/");
//Using sort to get the id as it is the longest element.
var sortArr = id.sort(function(a,b){return b.length - a.length});
id = sortArr[0];
return id;
}
}