将Google文档的URL粘贴到Google表格中,并自动获取标题和字数

闭嘴

大概是一个长镜头,但是没有人知道可以与Google表格一起使用的任何公式或脚本,这样当您将选择的URL粘贴到Google表格中时,它将自动获取每个URL的标题和字数吗?

carlesgg97

您所描述的内容可以使用自定义函数先验地实现它将在Docs API中查询所需的元数据,然后将其返回到单元格中。

但是,这是不可能的,因为DocumentApp自定义函数(1)不允许访问api 尝试这样做时,他们将返回诸如以下的错误:

您无权调用DocumentApp.openByUrl。

所需权限:https//www.googleapis.com/auth/documents(第88行)。

另类

  1. 整个表格文档中随意插入=GETDOCWORDCOUNT()=GETDOCTITLE()函数。首先,#ERROR!由于上述原因,它们将作为功​​能的结果显示

    示例表

  2. 打开Sheets文档时,该代码将创建一个“自定义脚本”菜单。将公式放入文档中后,单击菜单并根据需要选择Run GETDOCWORDCOUNTRun GETDOCTITLE工作表中以前显示为的公式#ERROR!将由运行函数的结果替换。在该步骤中,同时执行发现的任何错误GETDOCWORDCOUNTGETDOCTITLE功能也将被显示给用户:

    执行示例

var GETDOCWORDCOUNT_FUNCTION_REGEX = /=GETDOCWORDCOUNT\((.+)\)/;
var GETDOCTITLE_FUNCTION_REGEX = /=GETDOCTITLE\((.+)\)/;
var A1_CELL_REGEX = /^[A-Z]+[1-9][0-9]*$/;

function onOpen() {
  var ui = SpreadsheetApp.getUi();

  ui.createMenu("Custom scripts")
    .addItem("Run GETDOCWORDCOUNT", "runGetDocWordCount")
    .addItem("Run GETDOCTITLE", "runGetDocTitle")
    .addToUi();
}

function runGetDocWordCount() {
  var sh = SpreadsheetApp.getActiveSheet();

  var finder = sh.createTextFinder("\=GETDOCWORDCOUNT\(.+)")
                 .matchCase(true)
                 .matchEntireCell(true)
                 .useRegularExpression(true)
                 .matchFormulaText(true);

  var results = finder.findAll();
  var errors = [];

  for (var i=0; i<results.length; i++) {
    var range = results[i];
    var formula = range.getFormula();

    var cell = formula.match(GETDOCWORDCOUNT_FUNCTION_REGEX)[1];
    var url = sh.getRange(cell).getValue();
    try {
      range.setValue(GETDOCWORDCOUNT(url));
    } catch(e) {
      errors.push(range.getA1Notation() + ': ' + e.toString());
    }
  }

  if (errors.length > 0) {
    var ui = SpreadsheetApp.getUi();
    var title = errors.length.toString() + ' errors found';
    var prompt = errors.join('\n');
    ui.alert(errors.length + ' errors found', prompt, ui.ButtonSet.OK);
  }
}

function runGetDocTitle() {
  var sh = SpreadsheetApp.getActiveSheet();

  var finder = sh.createTextFinder("\=GETDOCTITLE\(.+)")
                 .matchCase(true)
                 .matchEntireCell(true)
                 .useRegularExpression(true)
                 .matchFormulaText(true);

  var results = finder.findAll();
  var errors = [];

  for (var i=0; i<results.length; i++) {
    var range = results[i];
    var formula = range.getFormula();

    var cell = formula.match(GETDOCTITLE_FUNCTION_REGEX)[1];
    var url = sh.getRange(cell).getValue();
    try {
      range.setValue(GETDOCTITLE(url));
    } catch(e) {
      errors.push(range.getA1Notation() + ': ' + e.toString());
    }
  }

  if (errors.length > 0) {
    var ui = SpreadsheetApp.getUi();
    var title = errors.length.toString() + ' errors found';
    var prompt = errors.join('\n');
    ui.alert(errors.length + ' errors found', prompt, ui.ButtonSet.OK);
  }
}

function GETDOCWORDCOUNT(url) {
  var doc = DocumentApp.openByUrl(url);
  var text = doc.getBody().getText();
  var words = text.split(/\S+/).length;
  return words;
}

function GETDOCTITLE(url) {
  var doc = DocumentApp.openByUrl(url);
  return doc.getName();
}

function isA1Cell(val) {
  if (typeof val != "string") return false;

  return A1_CELL_REGEX.test(val);
}

演示版

此处查看脚本的简短视频演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文字和说明格式化后粘贴到Google表格中

如何将 Postgres DDL 转储到可以粘贴到 Google 表格中的 CSV 中?

使用Google表格脚本从IP地址范围中获取国家/地区名称,然后将结果粘贴到另一列中

尝试在Google表格中显示标题和日期会自动与Google日历同步

如果工作表1和工作表2中都存在值,则复制行,并将其粘贴到工作表3中。Google表格。Google Apps脚本

从终端中的vim粘贴到Google文档(Firefox + Vimperator)-需要了解

编写应用程序脚本以复制并粘贴到隐藏的Google表格中

使用Google表格从不同的列导入数据并粘贴到行中

如何提取 <a> 的“href”属性并将其粘贴到 Google 表格中?

Google表格根据另一个值检查和列表中的查找将值复制到不同的选项卡,然后粘贴到同一行但不同的列

将表格粘贴到其他Excel实例中

表格将JavaScript粘贴到数据库中

将值复制并粘贴到Google表格中的空白单元格或非空白单元格时,如何使onEdit()事件对象起作用?

将一个工作簿中的值粘贴到另一个工作簿底部的脚本-Google表格

在 Google 表格中复制和粘贴移动范围

从其他网站将内联CSS丢失的数据粘贴到CK编辑器中,而不显示在Google Chrome中,而不是在IE和Firefox中

Google表格图表中的标题

将 URL 中的图像插入 Google 文档

如何以编程方式格式化内容以粘贴到 Google 电子表格中?

Google表格复制一个单元格并粘贴到另一个单元格中

将表格复制/粘贴到gmail

在Google表格中取消透视-乘以标题列和行

Google 表格脚本 - 复制行 4:8 并粘贴到表格的最后一行

从word文档的表格中复制行并将其粘贴到另一个word文档中表格的末尾

复制当前选择和URL并粘贴到Excel中?

如何从 Google 日历活动中获取 Google 文档/附件 URL?

将图片替换为Google文档中的表格

Google Apps脚本->将文档中的文本写入表格

Xpath,在Google表格中获取包含文本和图像的表格