2015-04-10 3 views
0

В качестве запроса от клиента меня попросили сделать дополнение Datetime к Документам Google. В основном то, что они хотели, было простым способом вставить дату & Время в файл документа. Они используют этот файл в качестве журнала сообщений между их консультантами и их сайтами. Я создал скрипт, и он отлично работает. Единственная проблема заключается в том, что она применима только к определенному файлу, к которому я добавляю. Это проблема, потому что каждый месяц создается новый файл.Добавить скрипт ко всем файлам, созданным в папке

То, что я хотел бы сделать, - это применить сценарий к каждому документу, который создается в этой конкретной папке, поскольку единственное, что создается в этой папке, - это файлы журнала связи для каждого месяца.

Мне любопытно, есть ли способ сделать это. Легко, так как я не очень программист.

Вот код, который я написал для получения даты и времени. Он создает вкладку «Пользовательский» в навигации по документу с выпадающим списком, чтобы выбрать «Datetime», который помещает Datetime, где бы ни было местоположение курсора.

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.'); 
 
    } 
 
}

Спасибо за помощь.

ответ

0

Невозможно, если вы не опубликуете его как аддон (и, возможно, администратор домена автоматически добавит его всем пользователям).
Альтернативой является ежемесячный процесс (использование триггеров), который
1) создает копию электронной таблицы, называет ее и организует ее в папке
2) опустошает текущую таблицу, чтобы начать месяц.
Таким образом, вы всегда держите скрипт в исходной таблице.
, чтобы предотвратить захват пользователей врасплох, когда они работают на листе, откройте боковую панель для подтверждения процесса ежемесячной резервной копии или используйте часовой механизм, чтобы вы могли контролировать время и делать это только в 4 часа ночи в первый день месяца, например ,

+0

Благодаря Зиг, я администратор домена и пытаюсь выяснить, как опубликовать скрипт, как аддон, но я просто не могу найти хорошие бонусы работы о том, как идти о выполнении этого. Все это было немного за пределами моей рулевой рубки. К сожалению, я не думаю, что документация, поставляемая Google, прекрасна. У вас есть какие-то ресурсы для того, чтобы указывать мне в хорошем направлении, чтобы выяснить, как строить аддоны? –

+0

действительно не являются официальными документами. Может быть, самое лучшее, если вы идете по маршруту №2 –

0

Ответ на вопрос Зига о дополнении является хорошим. Так как теперь администратор домена может подтолкнуть его ко всем пользователям через торговую площадку приложения.

Другие варианты использования триггера. 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(); 
} 
+0

Спасибо Спенсер. Я ищу в создании надлежащего аддона, но не уверен, где, черт возьми, даже начать. На самом деле это не моя область знаний, поэтому я немного пытаюсь понять, как это сделать. Но спасибо за ответ. –

Смежные вопросы