当前位置: 首页 > 知识库问答 >
问题:

如何通过谷歌应用脚本获得谷歌硬盘文件的“可共享链接”,并将链接粘贴到谷歌工作表中的单元格中?

逄宁
2023-03-14

我有一个脚本,使我的发票的PDF,并将其发送到谷歌驱动器文件夹。现在我想从它刚刚制作的文件中获取“可共享链接”,并将其粘贴到谷歌表格中的特定单元格中。我没有编码背景,最多能理解和修改一些代码。所以我使用我在网上找到的代码来创建PDF。我试图为可共享链接制作自己的代码,但毫无进展。谁能帮帮我。这是我正在使用的PDF代码。如果我能提供更多有用的信息,请告诉我。谢谢你!:)

  
  // Get the currently active spreadsheet URL (link)
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var token = ScriptApp.getOAuthToken();
  var sheet = ss.getSheetByName("Invoice");

  //Creating an exportable URL
  var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());
  var folderID = "#### Folder ID ####"; // Folder id to save in a folder.
  var folder = DriveApp.getFolderById(folderID);
  var invoiceNumber = ss.getRange("'Invoice'!I16").getValue()
  var InvoiceDate = ss.getRange("!I17").getValue()
  var pdfName = "Invoice #"+ invoiceNumber + " - " + Utilities.formatDate(new Date(), "GMT-7", "MM-dd-yyyy");

  /* Specify PDF export parameters
  From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
  */
  var url_ext = 'exportFormat=pdf&format=pdf'        // export as pdf / csv / xls / xlsx
  + '&size=letter'                       // paper size legal / letter / A4
  + '&portrait=true'                    // orientation, false for landscape
  + '&fitw=true&source=labnol'           // fit to page width, false for actual size
  + '&sheetnames=false&printtitle=false' // hide optional headers and footers
  + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
  + '&fzr=false'                         // do not repeat row headers (frozen rows) on each page
  + '&gid=';                             // the sheet's Id
    
  // Convert individual worksheet to PDF
  var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  });
  
  //convert the response to a blob
  var blobs = response.getBlob().setName(pdfName + '.pdf');
  
  //saves the file to the specified folder of Google Drive
  var newFile = folder.createFile(blobs);
  
  // Define the scope
  Logger.log("Storage Space used: " + DriveApp.getStorageUsed());

}```

共有1个答案

漆雕修能
2023-03-14

直觉上,你只能靠自己取得很多成就,这是开始时要走的路:

您希望检索pdf的链接,这样您就可以确定,只有在创建pdf时才会发生这种情况,即在这一行var newFile=folder之后。创建文件(blob)

因此,newFile是您创建的PDF,剩下的只是获取此文件的链接,您可以使用getUrl()getId()

var newFileLink=newFile。getUrl()

var newFileLink=”http://drive.google.com/uc?export=view

现在您已经存储了创建的PDF的链接,并且您希望将数据写入特定单元格中的电子表格中,也许您希望它在J16中,因为您正在使用发票号=ss.get范围('发票'!I16"). getValue()从I16获取值

假设您想在J16中设置一个值。直观地说,由于getValue检索某些内容,因此,某些链接setValue可能会起到相反的作用:

var WritePDFLink=ss.get范围("'发票'!j16"). setValue(newFileLink)

希望这是有见地的。

 类似资料:
  • 对于我的Google App Engine应用程序,我希望使用服务帐户自己的Google驱动器,即我不希望创建“常规”gmail帐户并向我的服务帐户授予特权,也不希望与任何其他人共享文件,我只希望将该驱动器用作应用程序的“内部文件系统”,仅由应用程序访问。 我的问题是: 1) 是否仍提供此类服务,即是否允许服务帐户使用其自己的专用驱动器,或者我是否被迫使用“新”谷歌云存储? 2)我在哪里可以找到任

  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 我有一个谷歌硬盘视频文件(比如https://drive.google.com/file/d/FILE_ID/view)我想要它的重定向器。谷歌视频。com链接。 像http://api.getlinkdrive.com/这样的网站是如何做到的?我尝试过使用谷歌硬盘REST应用编程接口(v2和v3),但仍然找不到方法。许多电视节目和电影网站将其内容托管在谷歌驱动器上,并使用这个过期的“隐蔽”网址,

  • 我有两个电子表格: 预算表,包括估计成本和实际成本 成本跟踪表,包括实际成本和收据参考 目前,我正在导入预算表中的实际成本,通过引用跟踪表中的实际成本行 所以我的预算表是这样引用成本跟踪表的:=(importrange(spreadsheet_key,sheet_name!I76")) 这很好,但是,如果我在成本跟踪表中插入一个新行,该行位于我已经引用的一些值之上,它将不会动态更新。 因此,如果我

  • 我试图使用一个谷歌脚本,从检索2个证券字段,并将输出保存到Google Sheet文件。我还需要脚本将datetime添加到工作表的第一列。 我创建了一个包含3列的基本Google工作表: A的格式为DateTime。第1行中有列名称date,第2行之后为空 以下是我的功能: 以下是输出: C和D列的输出正确。A列输出错误。每次我运行该函数时,每一行都会在最后一行的上方添加: 我第一次运行该函数是

  • 我希望每天凌晨1点从外部来源将一些数据输入到谷歌的工作表中。进口产品的数量将有所不同。 然后,我希望在数据上传完成后,按价格对数据进行排序,这将是凌晨1:05左右。 我看到它是可能的运行功能为谷歌工作表在一个时间的基础上。 我需要什么样的脚本来按价格对数据进行排序,所以最便宜的项目是每天早上运行脚本后的第2行。 要在Google Sheets中手动执行此操作,我会这样做-*突出显示第2行到数据,排