将脚本添加到文件夹中创建的所有文件

时间:2015-04-10 16:09:16

标签: google-apps-script google-drive-api google-docs

根据客户的要求,我被要求制作一个'日期时间' Google文档的补充。基本上他们想要的是插入日期和时间的简单方法。进入文档文件的时间。他们使用此文件作为他们的顾问和他们的网站之间的通信日志。我创建了脚本,效果很好。唯一的问题是它只适用于我添加到的特定文件。这是一个问题,因为他们每个月都会创建一个新文件。

我想要做的是能够将脚本应用于在该特定文件夹中创建的每个文档,因为在该文件夹中创建的唯一内容是每个月的通信日志文件。

我很好奇是否有办法做到这一点。一个简单的方法,因为我不是一个程序员。

以下是我为获取日期时间而编写的代码。它的作用是创造一个" Custom"在文档导航中使用下拉菜单选择"日期时间"将日期时间放在光标所在的位置。



function onOpen() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Custom')
      .addItem('Insert Date', 'insertAtCursor')
      .addToUi();
}

/**
 * Inserts the date at the current cursor location in boldface.
 */
function insertAtCursor() {
  var cursor = DocumentApp.getActiveDocument().getCursor();

  if (cursor) {
    // Attempt to insert text at the cursor position. If insertion returns null,
    // then the cursor's containing element doesn't allow text insertions.
    var date = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yyyy HH:mm - "); // "yyyy-MM-dd'T'HH:mm:ss'Z'"
    var element = cursor.insertText(date);
    if (element) {
      element.setBold(false);
    } else {
      DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
    }
  } else {
    DocumentApp.getUi().alert('Cannot find a cursor in the document.');
  }
}




感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

除非您将其作为插件发布(并且可选地将其域管理员自动添加到所有用户),否则无法实现。
另一种方法是使用月度流程(使用触发器),1)创建电子表格副本,为其命名并在文件夹上进行组织
2)清空当前的电子表格以开始月份。
通过这种方式,您始终将脚本保留在原始电子表格中。
为了防止用户在工作表上工作时出现意外,打开侧边栏以确认每月备份过程或使用每小时触发器以便您可以控制时间并且仅在该月的第一天凌晨4点进行。

答案 1 :(得分:0)

Zig对附加组件的回答很好。现在,域管理员可以通过应用程序市场将其推送给所有用户。

其他选项是使用触发器构建器。 https://developers.google.com/apps-script/reference/script/trigger-builder

这些是奇怪的生物,因为您要在文档中执行的代码不在文档中,而是在另一个脚本中。该脚本必须作为具有该文件权限的人运行。

function addMenuItem() {
  // Add a menu with some items, some separators, and a sub-menu.
  DocumentApp.getUi().createMenu('Custom')
      .addItem('Insert Date', 'insertAtCursor')
      .addToUi();
}

/**
 * Inserts the date at the current cursor location in boldface.
 */
function insertAtCursor() {
  var cursor = DocumentApp.getActiveDocument().getCursor();

  if (cursor) {
    // Attempt to insert text at the cursor position. If insertion returns null,
    // then the cursor's containing element doesn't allow text insertions.
    var date = Utilities.formatDate(new Date(), "GMT-5", "MM/dd/yyyy HH:mm - "); // "yyyy-MM-dd'T'HH:mm:ss'Z'"
    var element = cursor.insertText(date);
    if (element) {
      element.setBold(false);
    } else {
      DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
    }
  } else {
    DocumentApp.getUi().alert('Cannot find a cursor in the document.');
  }
}

 function buildTrigger(fileId){
 ScriptApp.newTrigger('addMenuItem')
   .forDocument(fileId)
   .onOpen()
   .create();
 }