1

次のスクリプトを使用して、ファイルに行を作成/追加します。Google-Online-Environment 内で問題なく動作します。ファイルを見て、行がどのように追加されているかを確認できます。ただし、PC の Google Drive-Folder 経由でファイルを見ると、最初の行 (作成中に書き込まれた行) しか表示されません。他の人は、PCでGoogleドライブを閉じて再起動した後にのみ表示されます(2時間待機)。では、スクリプト内で「フラッシュ」を実行して PC の変更を確認するにはどうすればよいでしょうか。

function appendFile (textArea) { // run by timer
  var d=new Date();
  var id;
  if ((id=ScriptProperties.getProperty ("fileId"))==null) {
    var f=DocsList.createFile("List", "Started at "+d+"\n");
    ScriptProperties.setProperty ("fileId", f.getId());
  }
  else {
    var f=DocsList.getFileById(id);
    f.append("Appended "+d+"\n");
    if (textArea!=undefined) {
      textArea.setText ("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
    }
  }
}
4

1 に答える 1

1

私は同様の問題を抱えていましたが、反対方向です。(PC 上のファイルを更新し、それをドライブにコピーし、apps-script が動作できるようにクラウドに同期することを期待しています。) ファイルを削除して再作成しなければならないことがわかりました。同期します。ここでも同じアプローチが機能しているようです。

コードの Ui 部分をコメント アウトし、ロギングを置き換えて操作を観察し、それを変更してゴミ箱に移動し、更新されるたびにテキスト ファイルを再作成しました。醜いが効果的 - PC の GDrive 上のファイルはすぐに更新されます。

function appendFile (/*textArea*/) { // run by timer
  var d=new Date();
  var id;
  if ((id=ScriptProperties.getProperty ("fileId"))==null) {
    var f=DocsList.createFile("List", "Started at "+d+"\n");
    ScriptProperties.setProperty ("fileId", f.getId());
  }
  else {
    var f=DocsList.getFileById(id);
    var text = String.concat(f.getContentAsString(),
               "Appended "+d+"\n");
    f.setTrashed(true);
    f=DocsList.createFile("List",text);
    ScriptProperties.setProperty ("fileId", f.getId());
//    if (textArea!=undefined) {
//      textArea.setText ("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
//    }
    Logger.log("id="+id+"\n"+"name="+f.getName()+"\n"+"date="+d+"\nContents="+f.getContentAsString());
  }
}

残りの問題:

  • ファイルの ID は実行のたびに変更されるため、覚えておくのは時間の無駄です。
  • 同じ理由で、テキスト ファイルの監視に頼ることはできません。
于 2012-12-22T16:18:27.597 に答える