-1

メソッドが見つかりませんopen()

  1. 見つからない場合、ドットを入力するときに選択できるのはなぜですか?
  2. では、どのようにファイルを開くことになっていますか? openByID()?本当に?この魔法のIDはどこで入手できますか?getURLから?真剣に?これが出てくる唯一のものです:

    SpreadsheetApp.openById(id).getUrl()
    

    しかし、それを掛けるためのIDがない場合、URLを取得する方法がわかりません...キャッチ22につながります。さらに、必要なURLを取得した場合は、推測します。 IDを取得するためにそれを解析するために...そして彼らはその特定の呪文のためにどのような魔法の方法を提供しましたか?

明らかに、私の理解が不足しています。何か助けはありますか?

function copyTemplate() {
  var targetSpreadsheetName="The file";

  var targetSpreadsheetID=SpreadsheetApp.open(targetSpreadsheetName).getId();
  targetSpreadsheetID.insertSheet("CellData", 1, {template:temp});


  // The code below will duplicate the sheet named "CellData" and insert it after 
  // the 1st sheet and call it "CellData"
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var temp = ss.getSheetByName("CellData");
  ss.insertSheet("CellData", 1, {template:temp});
}

質問はマルチパートです。

返されたエラーメッセージは「メソッドopen()が見つかりません」でした。

最初の質問は、「なぜメソッドopen()が見つからないのですか?」です。

2番目の質問は、「実際にそれが見つからない場合、ドットを入力するときになぜそれを選択できるのですか?」です。

3番目の質問は、「open()メソッドが機能しないという事実を考慮して、ファイルをどのように開くことになっているのですか?」です。コミュニティから受け取ると思われる答えは「withopenByID()」です。

それは、「IDはどこで入手できますか?」という4番目の質問につながります。明らかな答えは「getURL()」のようです。

そして、それは「getURL()をどのように使用するのですか?」という5番目の質問につながります。getURLにはIDが必要なようです。getURLがURLを取得するためにIDを必要とし、openByIDがIDを取得するためにURLを必要とする場合、無限ループが発生します。確かに私は何かを誤解しています。

6番目の質問は、「getURL()がソリューションの一部になる場合、IDを、返された文字列の残りの部分とどのように区別するのですか?」です。

それが私の質問を明確にすることを願っています。

4

1 に答える 1

4

さて、私は最終的にあなたの質問に答えようとします、あなたがそれが十分に明確であることがわかることを願っています... ;-)

まず最初に:

var ss = SpreadsheetApp.open()

ドットの後のオートコンプリートに実際に表示されますが、注意しなかったのは、引数がファイル、つまり適切なステートメントによって返されるオブジェクトであるということです。それを取得する方法と、この例を使用して、このファイルの他のパラメーターを取得する方法を見てみましょう。

    function myFunction() {
    var files = DocsList.find('thisisthesheetIwant');// this is an array of file objects that include the term 'thisisthesheetIwant'
    var file = files[0];// I take the first one
    var filename = file.getName();//and get its name
    var fileId = file.getId();// its ID
    var fileurl = file.getUrl();//and its url
// then I show the results in the logger
    Logger.log('number of file found = '+files.length+'\n\n'+filename+'\n\n'+fileId+'\n\n'+fileurl+'\n\n')
    var ss = SpreadsheetApp.open(file);// using that file object I can open a spreadsheet
    var content = ss.getSheets()[0].getDataRange().getValues().toString();// and get the whole content of the first sheet
    Logger.log('content = '+content);// there it is
    }

コード付きのスプレッドシートはこちらから入手できるので、自分でテストできthisisthesheetIwantます。複数のファイルが返された場合は期待どおりに機能しないため、同じような名前やコンテンツのファイルがないことを期待して名前を付けました。

ロガーを見てください、そしてそれがあなたの質問に答えることを願っています。以下のように表示されます。 ここに画像の説明を入力してください

そして、シート自体は次のようになります:

ここに画像の説明を入力してください

編集: IDとURLには共通の部分があることに注意してください。URLはブラウザのアドレスバーに表示されるものであり、IDはその一部にすぎません。これで、同じスプレッドシートをで開くことができます

SpreadsheetApp.openById(fileId)
于 2012-12-14T16:59:19.520 に答える