web-dev-qa-db-ja.com

編集用にGoogleドキュメントのコピーを自動的に作成するスクリプト

私はここに完全な初心者の投稿のように感じます。私はCSS、HTML、およびXMLをかなりよく知っていますが、常にJSを避けてきました。私はjavascriptをほとんど知らず、最近、追いつくためにLynda.comコースを開始しました。私の無知でごめんなさい。そのため、私はGoogle AppsScriptの学習に本当に苦労しています。明らかに、JSを理解する前に、JSを学ぶ必要があります。

私が働いている学校(5000人の学生)はオンラインカリキュラムを設定しました。私は何千ものグーグルドキュメントワークシートの形でカリキュラムを作成しました。これらのワークシートは、さまざまなWebサイトにリンクされています。

私たちが直面している問題は、学生がドキュメントを開くときに、編集する前にドキュメントのコピーを作成する必要があることです(もちろん、元のドキュメントを編集できないようにする必要があります)。モバイルデバイスでデスクトップUIを使用する場合、Googleドキュメントでコピーを作成することは実際にはうまく機能しないため、これはタブレットでモバイルブラウザを使用している学生にとっては本当に残念です。

この種のことはスクリプトで自動化できることを私は知っています。私は ここ を見てきました、そして低くて見よ、それはうまくいきます!そんな機能性を3年間探していた私は、パンツを喜んで怒らせています。 (はい、それは悲しいことです)。

だから、私が求めているのは、学生がウェブサイトのレッスンのボタンをクリックすると自動的に作成されて開くように、このコードを適応させる方法を初心者が理解するのを喜んで手伝ってくれるだろうか?新しいタブにワークシートをコピーしますか?

/**
 * Copy an existing file.
 *
 * @param {String} originFileId ID of the Origin file to copy.
 * @param {String} copyTitle Title of the copy.
 */
function copyFile(originFileId, copyTitle) {
  var body = {'title': copyTitle};
  var request = gapi.client.drive.files.copy({
    'fileId': originFileId,
    'resource': body
  });
  request.execute(function(resp) {
    console.log('Copy ID: ' + resp.id);
  });
} 

昨日Javascriptを学びながら一日中過ごしましたが、まだまだ長い道のりがあります。私が自分でこれを理解できるようになるまでにどれくらいの時間がかかるかわかりません。

15
user1798533

DocsListは非推奨であるため、現在、次のコードを使用してファイルのコピーを作成できます。

File file=DriveApp.getFileById(fileId).makeCopy(fileName, folder);

ここで、fileIdは、Arun Nagarajanによる answer で説明されているように取得できます。

6

2015年の更新、 Google ScriptはfileIdを削除しました 理由は不明です。 GoogleドキュメントのURLに「/ copy」を追加する以前の方法が再び有効になりました。例) https://docs.google.com/document/d/1GTGuLqahAKS3ptjrfLSYCjKz4FBecv4dITPuKfdnrmY/copy

3
Edward

これを適切に行うためのコードは次のとおりです(2019年現在):

/**
 * Create custom menu when document is opened.
 */
function onOpen() {
  DocumentApp.getUi()
    .createMenu('For Students')
    .addItem('Make a copy', 'makeACopy')
    .addToUi();
}

function makeACopy() {
  var templateId = DocumentApp.getActiveDocument().getId();
  DriveApp.getFileById(templateId).makeCopy();
}
0
v.karbovnichy